我做了一个
git rebase -i
并重写了一次提交。
如何显示我提交的新提交消息和旧提交消息之间的差异? (例如,来自
git reflog
中的提交)
git reflog
找到相关的提交哈希值。git reflog
a123b4c (HEAD -> main) HEAD@{0}: rebase -i (finish): returning to refs/heads/main
a123b4c (HEAD -> main) HEAD@{1}: rebase -i (pick): commit message 1
c456d7e HEAD@{2}: rebase -i (start): checkout HEAD~2
e890f1g HEAD@{3}: commit: old commit message 2
在此示例中:
a123b4c
是新提交的哈希值(带有改写消息的提交),并且e890f1g
是原始提交的哈希值(包含旧消息的提交)。git show --pretty=format:%s <commit-hash>
命令显示提交消息,将 <commit-hash>
替换为您在上一步中找到的哈希值:
git show --pretty=format:%s a123b4c
commit message 1
git show --pretty=format:%s e890f1g
old commit message 2
这将为您提供相应哈希值的提交消息,然后您可以手动比较。
您可以编写一个 bash 函数,使用
diff
命令比较两个提交消息。diff_git_commit_messages() {
if [ $# -ne 2 ]; then
echo "Usage: ${FUNCNAME[0]} <commit-hash-1> <commit-hash-2>"
return
fi
diff \
<(git show --pretty=format:%s $1) \
<(git show --pretty=format:%s $2)
}
例如,
$ diff_git_commit_messages 6bfa911 HEAD
1c1
< add file
---
> my new msg
你说你只是改写了一次提交。在这种情况下你可以使用
git-range-diff(1)
。该命令将向您显示所有更改,但我
假设由于数据(文件)没有任何更改,那么小
上下文差异不会太分散注意力。
您需要一些共同的基本承诺。如果你有一个特点 您已重新建立分支的分支,然后您可以使用您分支的分支 关闭。我们就说
main
。
那么你首先需要旧版本。我已在此标记了
first
为了方便起见。
最后您需要当前版本。如果这是
HEAD
那么你可以使用
@
或 HEAD
。
首先我写了这个提交消息:
Short message
然后我将其改写为:
Short message
Actually let's write a longer message.
结果:
$ git range-diff @~ first second
1: 69a2ff6 ! 1: 23825c2 Short message
@@ Metadata
## Commit message ##
Short message
+ Actually let's write a longer message.
+
## a (new) ##
@@
+hello
颜色(此处丢失)将区分 元数据和数据上的加号 (
hello
):添加的行
元数据部分添加在“版本”之间,而 hello
是
两个版本都添加了(因此没有相互差异)。
嗯。我想补充屏幕截图不会有什么坏处: