git add之后文件没有显示在git diff中。我怎么知道它会被提交?

时间:2013-10-03 19:44:14

标签: git file commit git-commit git-diff

我有一个未跟踪的文件没有出现在git diff中,当我将它添加到'change to be committed'区域时,它仍然没有显示在git diff中。当我对HEAD做差异时,我出现git status -v

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

5 个答案:

答案 0 :(得分:45)

如果您希望在差异中看到暂存更改,您仍然可以使用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会在每行上提供每个分段文件名。

答案 1 :(得分:25)

要查看自上次提交以来工作树中的所有更改(包括新文件),请使用:

git diff HEAD

点击此处查看更多示例:git-diff

答案 2 :(得分:5)

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

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

它有漂亮的面板可以显示你上演,而不是上演等等。

enter image description here

我的屏幕截图似乎很多,因为我目前没有对此状态进行任何更改。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

我想在David Cain的最上面添加以下细微差别:命令...

git diff --staged

...仅显示阶段性更改(如@rogerdpack指出)。

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

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

不用说,请记住,这些命令会与以前已暂存和未暂存的文件 all 混为一谈,因此,如果周围有许多临时文件,则应格外小心。有关更多信息,请参见git diff's手册页。