有时当我即将提交时,我记不起自上次提交以来发生了什么变化。如何查看代码当前状态和上次提交的差异?
6 回答
如果您尚未将任何文件添加到索引中(使用git add
),只需执行
git diff
这将显示您的工作树和索引之间的差异。
如果您已将文件添加到索引中,则需要执行此操作以显示索引和上次提交 (HEAD) 之间的差异。
git diff --cached
最后,如果您想查看与最新提交 ( HEAD
) 相比在工作树中所做的更改,您可以(正如 Carlos 指出的那样)
git diff HEAD
这些变化是 和 的git diff
组合git 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
会将工作树的当前状态与当前提交进行比较。
你试过git show
吗?
描述:显示一个或多个对象(blob、树、标签和提交)。
对于提交,它显示日志消息和文本差异。它还以 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
这也适用于我:
# The last one
git diff HEAD~1 HEAD
# The last but one, etc...
git diff HEAD~2 HEAD~1
这通常适用于线性历史。如果还有合并提交,这可能会变得更加棘手。我建议您查看此文档以获得一个很好且完整的解释,尤其是提交树插图示例: