你可能已經發現了一件神奇的事情。前面我們說,.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