我有一个未跟踪的文件没有出现在git diff中,当我将它添加到'change to be committed'区域时,它仍然没有显示在git diff中。当我对HEAD做差异时,我出现git status -v
。
我还是git的新手,所以有人可以告诉我文件是否会被提交,即使它没有出现在常规差异中,因为它已被添加到暂存区域?
答案 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)
答案 2 :(得分:5)
正如你所见。它显示在git status
中,所以是的,它将在您git commit
时提交。
您可能会发现使用gitx(Mac)或gitg(Linux)等可视化git工具很有帮助,
它有漂亮的面板可以显示你上演,而不是上演等等。
我的屏幕截图似乎很多,因为我目前没有对此状态进行任何更改。
答案 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手册页。