簡體   English   中英

查看當前狀態和上次提交之間的差異

[英]See diff between current state and last commit

有時,當我要進行提交時,我不記得自上次提交以來到底發生了什么變化。 如何查看代碼當前狀態和上次提交的差異?

如果您還沒有向索引添加任何文件(使用git add ),只需執行

git diff

這將顯示您的工作樹和索引之間的差異。

如果您已將文件添加到索引,則需要執行此操作以顯示索引與上次提交 (HEAD) 之間的差異。

git diff --cached

最后,如果您想查看與最新提交 ( HEAD ) 相比在工作樹中所做的更改,您可以(正如 Carlos 指出的那樣)

git diff HEAD

這些更改是git diffgit diff --cached的組合。

如果您剛剛進行了一次提交,或者想查看與當前狀態相比在上次提交中發生了什么變化(假設您有一個干凈的工作樹),您可以使用:

git diff HEAD^

這會將 HEAD 與之前的提交進行比較。 一個也可以做

git diff HEAD^^

與 2 次提交前的游戲狀態進行比較。 要查看當前狀態和某個提交之間的差異,只需執行以下操作:

git diff b6af6qc

其中b6af6qc是提交哈希的示例。

這也顯示了差異以及哪些文件已被更改/修改。

$ git status 

顯示索引文件和當前 HEAD 提交之間存在差異的路徑,工作樹和索引文件之間存在差異的路徑,以及工作樹中未被 git 跟蹤的路徑(並且不被 gitignore(5) 忽略) )。 第一個是您將通過運行 git commit 提交的內容; 第二個和第三個是你可以通過在運行 git commit 之前運行 git add 來提交的內容。

https://www.kernel.org/pub/software/scm/git/docs/git-status.html

您要求 git 區分當前/最后一次提交,它的簡寫為HEAD

所以git diff HEAD會將工作樹的當前狀態與當前提交進行比較。

這也適用於我:

# The last one
git diff HEAD~1 HEAD

# The last but one, etc...
git diff HEAD~2 HEAD~1

這通常適用於線性歷史。 如果還有合並提交,這可能會變得更加棘手。 我建議你查看這個文檔以獲得一個很好和完整的解釋,特別是那個提交樹圖示例:

https://git-scm.com/docs/gitrevisions

你有沒有試過git show

描述:顯示一個或多個對象(斑點、樹、標簽和提交)。

對於提交,它顯示日志消息和文本差異。 它還以由 git diff-tree --cc 生成的特殊格式呈現合並提交。

取自 git help

您不需要編寫 HEAD 或上次提交的 SHA-1,只需鍵入git show

我認為這對您的需求以及其他答案都有幫助,但根據具體情況,可以減少打字次數和提供更多信息。

在這里,我添加了git show實際顯示的示例:

>> git show

commit 49832d33b5329fff95ba0a86002ee8d5a762f3ae (HEAD -> my_new_branch, master)
Author: Abimael Domínguez <my_mail@mail.com>
Date:   Thu Jan 7 13:05:38 2021 -0600

    This is the commit message of the last commit

diff --git a/some_folder/some_file.txt b/some_folder/some_file.txt
index 59fb665..5c36cde 100644
--- a/some_folder/some_file.txt
+++ b/some_folder/some_file.txt
@@ -3,6 +3,6 @@
 This is the content of the last updated file
 some text
 some text
-text deleted
+text added
 some text
 some text

暫無
暫無

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

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