git diff 比较的是工作目录树与暂存区之间的区别。

git diff --cached 比较的是暂存区和版本库最后一个版本的区别。

git diff HEAD 比较的是工作目录树(包括暂存的和未暂存的修改)与版本库最后一个版本的差别。

 

这三个应用可以简单地理解为:

 如果你想看自己对照前一个版本所做的修改用: git diff HEAD

如果你有边修改边保存的习惯,打个比喻:

你做git add可以比喻成你做保存(ctrl+s),而git diff就是看你哪些东西没保存,git diff --cached则是看哪些东西保存了。

 

举例:

最开始你修改了一些东西,但没保存(git add)

bash$ git diff
diff --git a/FunctionTest.c b/FunctionTest.c
index 5dad004..38f483c 100644
--- a/FunctionTest.c
+++ b/FunctionTest.c
@@ -28,7 +28,9 @@ void FunctionTest()
        functionTest4(char1);
        functionTest5(char1, char2);
        functionTest6(float1);
-} int functionTest1()
+}
+
+int functionTest1()
 {
        int localVar = 7;
        return localVar + globalVar;
高亮的是做的更改。

然后你保存,git add .

这时你git diff看不到任何东西。

之后你又修改了一行,这时git diff 查看没保存的:

bash$ git diff
diff --git a/FunctionTest.c b/FunctionTest.c
index 38f483c..036c62c 100644
--- a/FunctionTest.c
+++ b/FunctionTest.c
@@ -29,7 +29,7 @@ void FunctionTest()
        functionTest5(char1, char2);
        functionTest6(float1);
 }
-
+new
 int functionTest1()
 {
        int localVar = 7;
从git status又可以看出,你保存过修改,也有部分未保存:

bash$ git status 
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   FunctionTest.c
#
# 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:   FunctionTest.c
#

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐