簡體   English   中英

添加git后,文件未顯示在git diff中。 我怎么知道它將被落實?

[英]File not shown in git diff after a git add. How do I know it will be committed?

我有一個未跟蹤的文件,該文件未出現在git diff中,當我將其添加到“要提交的更改”區域時,它仍未顯示在git diff中。 對HEAD進行比較時,顯示為git status -v

我對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會將每個暫存的文件名放在自己的行上。

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

git diff HEAD

在這里查看更多示例: git-diff

如您所見。 它顯示為git status ,所以是的,將在您git commitgit commit

您可能會發現使用可視git工具(例如gitx(Mac)或gitg(Linux))會有所幫助,

它具有漂亮的面板,可顯示已上演,未上演等。

在此處輸入圖片說明

我的屏幕快照似乎是多余的,因為我目前對該狀態沒有任何更改。

如果您輸入“ git add __”,則該文件將包含在下一次提交中。 當您運行“ git push”時,此提交將被推送到服務器。

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

git diff --staged

...僅顯示階段性更改(如@rogerdpack指出)。

現在,如果僅在生成單個文件的差異后,那么我就沒什么可添加的。 但是,如果要生成的差異文件包含“ 自最新HEAD以來的所有更改 ”,則您可能應該(1.)暫存所有具有更改的文件,(2。)運行diff,(3。)暫存所有文件,如下所示:

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

不用說,請記住,這些命令會與您之前已暫存和未暫存的所有文件混在一起,因此,如果周圍有許多臨時文件,則應格外小心。 有關更多信息,請參見git diff的手冊頁。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM