在git diff中比较哪些文件?

时间:2017-06-15 12:01:18

标签: git

根据 使用Git进行版本控制 一书," git diff显示了您的工作目录与索引之间的区别。它暴露了工作目录中的脏东西,因此是您下次提交的候选者。"

" git diff显示了你的工作目录和索引之间的区别"意思?当您修改文件并运行git diff时,在暂存区域中没有任何内容可供git比较工作目录,因为您还没有上传任何内容,那么它与它进行比较的是什么?

1 个答案:

答案 0 :(得分:2)

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

在这种情况下,如果您修改文件然后执行git diff,修改后的文件(在您的工作区域中)将与索引进行比较,这将显示相​​同的差异,就像您将其与当前的提交。

但是,如果您现在暂存该文件(git add that-file),然后再次修改它,并执行另一个git diff,您的修改后的文件(在您的工作区域中)将与分阶段和修改后的文件进行比较索引中的文件。现在,这与HEAD提交的比较不同。

如果您运行这些命令,您会看到git diff将b与c进行比较,而不是与c进行比较:

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