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
#