39

我有一个未跟踪的文件,它没有出现在 git diff 中,当我将它添加到“要提交的更改”区域时,它仍然没有出现在 git diff 中。git status -v当我对 HEAD 进行 diff 时,我出现了。

我对 git 还是很陌生,所以任何人都可以告诉我文件是否会被提交,即使它没有出现在常规差异中,因为它已被添加到暂存区域?

4

5 回答 5

56

如果您想在 diff中查看阶段性git diff更改,您仍然可以使用,您只需要传递--staged标志:

david@pav:~/dummy_repo$ echo "Hello, world" > hello.txt
david@pav:~/dummy_repo$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   hello.txt
nothing added to commit but untracked files present
david@pav:~/dummy_repo$ git add hello.txt
david@pav:~/dummy_repo$ git diff
david@pav:~/dummy_repo$ git diff --staged
diff --git a/hello.txt b/hello.txt
new file mode 100644
index 0000000..76d5293
--- /dev/null
+++ b/hello.txt
@@ -0,0 +1 @@
+Hello, world

如果您只关心暂存的文件,您当然可以做一个git status, 但git diff --staged --name-only会在自己的行上给出每个暂存的文件名。

于 2013-10-03T20:04:43.237 回答
35

To see all the changes in the working tree since your last commit including new files use:

git diff HEAD

See more examples here: git-diff

于 2014-12-04T17:08:18.107 回答
5

如你所见。它显示在 中git status,所以是的,它会在你提交时提交git commit

您可能会发现使用可视化 git 工具很有帮助,例如 gitx (Mac) 或 gitg (Linux),

它有很好的面板可以向您展示已上演、未上演等。

在此处输入图像描述

我的屏幕截图似乎是多余的,因为我目前该状态没有任何变化。

于 2013-10-03T19:51:06.473 回答
1

如果您输入“git add __”,该文件将包含在您的下一次提交中。当您运行“git push”时,此提交将被推送到服务器。

于 2013-10-03T19:59:36.510 回答
0

我想在 David Cain 的最佳答案中添加以下细微差别:命令...

git diff --staged

...仅显示分阶段的更改(正如@rogerdpack 指出的那样)。

现在,如果您只是在生成单个文件的差异之后,那么我没有什么可添加的。但是,如果您要生成一个带有“自最新 HEAD 以来的所有更改”的 diff 文件,那么您可能应该 (1.) 暂存所有带有更改的文件,(2.) 运行 diff,(3.) 取消暂存所有文件,如下:

git add -A
git diff --staged HEAD
git reset

不用说,请记住,这些命令会弄乱您以前所有暂存和未暂存的文件,因此如果您有大量临时文件,则应谨慎行事。有关更多信息,请参阅git diff 的手册页。

于 2018-07-31T15:16:52.140 回答