最近在使用Git,把自己这一段时间对Git的一些理解与困惑记录下来,以便自己回顾,如果能够帮助到别的网友那么也是极好的。
Git初步的分为
- 工作区:本地电脑上的文件
- 暂存区(stage or index):存放本地已经被add过的文件
- 版本库(repository):一个仓库,存放所有被git管理的文件
1. 工作区
工作区:比较简单,就是你电脑本地的文件,这里不再做过多的解释。
2. 暂存区
暂存区:每当你对工作区的文件执行git add
命令之后,暂存区的目录树就会被更新,且与工作区的目录树一致。
Note
暂存区可以理解为购物车,将所有你喜欢的东西(准备提交的文件)先集中到一起,便于管理,可以随时移除(git checkout --<filename>
),也可以一次性全部付款(git commit
)
2.1. 当执行git commit
后,master分支的会自动更新暂存区的目录树到自身,这个时候文件才真正的进入git仓库。
图片转自:http://www.liaoxuefeng.com/files/attachments/001384907702917346729e9afbf4127b6dfbae9207af016000/0
此时暂存区就没有内容了
图片转自:http://www.liaoxuefeng.com/files/attachments/0013849077337835a877df2d26742b88dd7f56a6ace3ecf000/0
这一点需要注意的是。此时有的同学可能会使用git diff
去查看暂存区(stage dictionary)与工作区(work dictionary)的区别。此外还有git diff --cache
,
git diff HEAD
。不管你们怎么样,反正我是刚看到这三个的时候有些懵。这里把我查到的资料给大家说下
git diff
:查看暂存区和工作区的区别
git diff -- cache
:查看暂存区与master分支的区别
git diff HEAD
:查看工作区与master分支的区别
git checkout --<filename>
:撤销工作区的修改
当使用git checkout --<filename>
的时候,将当前文件恢复到最近一次add或者commit的状态。
git reset HEAD <filename>
:撤销add到暂存区的修改