我对git diff
的输出感到困惑echo "hello">>welcome.txt
git diff
为什么没有输出?
git add welcome.txt
git diff
为什么没有输出?
git diff --cached
diff --git a/welcome.txt b/welcome.txt
new file mode 100644
index 0000000..ce01362
--- /dev/null
+++ b/welcome.txt
@@ -0,0 +1 @@
+hello
为什么现在输出?
似乎git diff在没有参数的情况下不起作用--cached,是吗?
答案 0 :(得分:1)
为此,git add
有两个含义:
因此,当您在创建文件后git diff
时,您看不到任何内容。然后,当您添加它时,由于它也直接停滞,您在git diff
时看不到它,但是您会看到它git diff --cached
。
答案 1 :(得分:1)
情景1:
echo "hello">>welcome.txt
git diff
混淆的原因主要是你正在创建一个尚未存在于git中的新文件。 这里的文件welcome.txt不在git仓库中,所以git对它的历史记录一无所知。如果已经提交了以前版本的welcome.txt,那么您将看到这种情况的不同之处。
情景2:
git add welcome.txt
git diff
在这种情况下,您已将文件添加到暂存区域。就git diff而言,这有效地提交文件,git diff只会显示工作副本和暂存区域中welcome.txt版本之间的差异。
情景3:
正如你所看到的那样,相当是真的,就git diff而言,暂存文件与提交文件是一样的。您仍然可以传递--cached,您将看到暂存区域和当前HEAD之间的差异。
作为Simon said,它主要是关于git diff如何与临时区域进行交互。 Pro Git也是开始使用git的优秀在线资源。
编辑: Git书籍条目treeishes。
答案 2 :(得分:0)
不,这都是关于临时区域的。在这里阅读更多http://gitready.com/beginner/2009/01/18/the-staging-area.html