工作区与暂存区
概念
首先说明下什么是工作区与暂存区
- 工作区: 工作区指的就是用户直接操作的地方,简单理解就是你编辑代码时的工程目录下的内容就是你的工作区
- 暂存区: 这也是git的特色之一,即某次代码修改完成,在正式提交前需要先将修改内容添加到暂存区中,如果没问题则可以commit到版本库,也可以用暂存区内容覆盖工作区内容;类似于在某个时间节点对你的修改做一个快照保存起来,可以用其提交也可以使用它回滚你的代码
- 版本库: 也就是每次commit后代码正式存储的空间
关系
工作区、暂存区、版本库三者之间的关系如下:
实例演示
在一个git仓库下查看当前状态,显示当前无改动需要提交
# 当前仓库目录结构如下
> ls
readme.txt
# 查看git状态
> git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
修改目录下的readme.txt文件,并创建一个demo.html文件,再次查看状态,显示当前已跟踪的文件中有一个文件发生变更,并且有一个文件未被添加到缓存区
> git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
demo.html
no changes added to commit (use "git add" and/or "git commit -a")
通过git add
命令将变更提交到缓存区,这时再查看状态可以发现所有改动已经被正确的添加到缓存区进行跟踪,处于待提交状态
> git add readme.txt demo.html
> git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: demo.html
modified: readme.txt
使用git commit
命令将缓存区中内容提交到版本库中
>git commit -m "add demo.html and modify readme"
[master 5dda459] add demo.html and modify readme
2 files changed, 1 insertion(+)
create mode 100644 demo.html
# 再次查看git状态,所有改动已经提交至版本库,当前git环境已经是干净的了
> git status
On branch master
nothing to commit, working tree clean
总结
总结一下git提交一修改的基本操作流程:
- 在工作区中修改、添加、删除文件
- 使用git add命令将文件添加到暂存区中
- 使用git commit命令将文件提交到版本库中
系列文章(持续更新中)
Git基础概念相关文章汇总: