在git提交環節,存在三大部分:working tree, index file, commit
這三大部分中:
working tree:就是你所工做在的目錄,每當你在代碼中進行了修改,working tree的狀態就改變了。
index file:是索引文件,它是鏈接working tree和commit的橋樑,每當咱們使用git-add命令來登記後,index file的內容就改變了,此時index file就和working tree同步了。
commit:是最後的階段,只有commit了,咱們的代碼才真正進入了git倉庫。咱們使用git-commit就是將index file裏的內容提交到commit中。
總結一下:
git diff:是查看working tree與index file的差異的。
git diff --cached:是查看index file與commit的差異的。
git diff HEAD:是查看working tree和commit的差異的。(你必定沒有忘記,HEAD表明的是最近的一次commit的信息)
爲了更加清晰的闡釋這個關係,來給出一個實例。
[yaya@yaya-desktop]$ cat main.c
#include<stdio.h>
int main(int argc,char *argv[])
{
printf(「hello.\n」);
printf(「he was a student.\n」);
return 0;
}
而後git init, git add . , git commit;
以後你將源代碼修改成:
[yaya@yaya-desktop]$ cat main.c
#include<stdio.h>
int main(int argc,char *argv[])
{
printf(「hello.\n」);
printf(「he was a student.\n」);
printf(「he was born in finland.\n」);
return 0;
}
此時你git add .,但不用執行git commit命令。而後你再將源代碼改成:git
這個時候,你執行以下三個命令,仔細查看,我相信你會發現它們三個的區別的!
$ git diff
$ git diff –cached
$ git diff HEAD
講到這裏,基本上對git diff命令有了比較深刻的瞭解了,如今你再使用git status看看輸出結果,樣子大概是這樣:
[yaya@yaya-desktop]$ git status
# On branch master
# Changes to be committed:
# spa