你可能已经发现了一件神奇的事情。前面我们说,.git隐藏目录里的index文件就是暂存区,要被提交的文件首先得添加到暂存区中。但当你往暂存区里添加了很多很多,很大很大的文件时,你发现这个index文件仍然很小,远没有你想象中的那么大。在你的直觉里应该是每次都把文件复制一份添加到暂存区里才对。
然而事实并不是这样哦?
事实上,Git管理的不是你的文件,而是你的修改。你修改一次,然后使用git add命令,它就把你做的修改添加到暂存区中。什么是修改呢?比如你删除了某行文字,添加了几个字符或者创建一个新文件等等都叫做修改。
接下来你可以做一个实验
首先,往readme.md中添加一行文字:
Git is amazing!
I love Git!
And you?
现在,git add一下:
$ git add readme.md
接着,你再往readme.md中添加一行文字:
Git is amazing!
I love Git!
And you?
You like it,right?
然后git commit:
$ git commit -m "add new line"
[master 3379b71] add new line
1 file changed, 1 insertion(+)
这时你再使用git status查看一下当前工作区的状态:
$ 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.md
no changes added to commit (use "git add" and/or "git commit -a")
Git告诉你,readme.md被修改了。但明明我刚才已经git add,然后又git commit了,怎么还会出现这种情况呢?
原因就是,你第二次修改之后,没有git add,而是直接git commit进行提交了,所以第二次的修改没有被提交,你提交的只是第一次的修改。
明白了吗?
最后再告诉你一个命令:
$ git diff HEAD -- readme.md
这个命令可以查看工作区和版本库里最新版本的区别。
如果喜欢的话,可以关注我的微博http://weibo.com/qiaoer2017