我有一个未跟踪的文件,它没有出现在 git diff 中,当我将它添加到“要提交的更改”区域时,它仍然没有出现在 git diff 中。git status -v
当我对 HEAD 进行 diff 时,我出现了。
我对 git 还是很陌生,所以任何人都可以告诉我文件是否会被提交,即使它没有出现在常规差异中,因为它已被添加到暂存区域?
我有一个未跟踪的文件,它没有出现在 git diff 中,当我将它添加到“要提交的更改”区域时,它仍然没有出现在 git diff 中。git status -v
当我对 HEAD 进行 diff 时,我出现了。
我对 git 还是很陌生,所以任何人都可以告诉我文件是否会被提交,即使它没有出现在常规差异中,因为它已被添加到暂存区域?
如果您想在 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
会在自己的行上给出每个暂存的文件名。
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
如你所见。它显示在 中git status
,所以是的,它会在你提交时提交git commit
。
您可能会发现使用可视化 git 工具很有帮助,例如 gitx (Mac) 或 gitg (Linux),
它有很好的面板可以向您展示已上演、未上演等。
我的屏幕截图似乎是多余的,因为我目前该状态没有任何变化。
如果您输入“git add __”,该文件将包含在您的下一次提交中。当您运行“git push”时,此提交将被推送到服务器。
我想在 David Cain 的最佳答案中添加以下细微差别:命令...
git diff --staged
...仅显示分阶段的更改(正如@rogerdpack 指出的那样)。
现在,如果您只是在生成单个文件的差异之后,那么我没有什么可添加的。但是,如果您要生成一个带有“自最新 HEAD 以来的所有更改”的 diff 文件,那么您可能应该 (1.) 暂存所有带有更改的文件,(2.) 运行 diff,(3.) 取消暂存所有文件,如下:
git add -A
git diff --staged HEAD
git reset
不用说,请记住,这些命令会弄乱您以前所有暂存和未暂存的文件,因此如果您有大量临时文件,则应谨慎行事。有关更多信息,请参阅git diff 的手册页。