2017-06-15 133 views
0

根据本书版本控制与Git,“git diff显示您的工作目录和索引之间的区别,它暴露工作目录中的脏东西,因此是您的下一个提交阶段的候选人。 “在git diff中比较哪些文件?

“git diff显示您的工作目录和索引之间的区别”是什么意思?当你修改一个文件并运行git diff时,暂存区中没有任何东西可以让git比较工作目录,因为你还没有登台,所以它比较什么?

+0

该指数不包括 “一无所有”,它包含处于最新提交状态的存储库的内容。 – mkrieger1

+0

与使用git diff HEAD的上次提交进行比较有什么不同? –

+0

直到您修改索引后才会有所不同。 – mkrieger1

回答

2

如果您的存储库状态为是干净的,意味着您尚未修改任何文件,那么索引与提交HEAD指向的存储库状态相匹配。

在这种情况下,如果修改文件,然后执行git diff,则修改后的文件(在您的工作区域中)将与索引进行比较,该索引将显示与将其与当前提交进行比较相同的差异。但是,如果您现在创建该文件(git add that-file),然后再次修改该文件,并执行另一个git diff,则会将修改后的文件(在您的工作区中)与索引中的暂存和修改文件进行比较。这与现在与HEAD提交的比较不同。

如果您运行这些命令,你会看到git diff与C,而不是用C比较B:

git init . 

echo a >test.txt 
git add . 
git commit -m "Initial commit" 

echo b >test.txt 
git add . 

echo c >test.txt 
git diff 

输出:

diff --git i/test.txt w/test.txt 
index 2fea07c..12d6973 100644 
--- i/test.txt 
+++ w/test.txt 
@@ -1 +1 @@ 
-b 
+c