我需要更改旧的提交消息。考虑到我之后做了一些其他提交,有没有办法通过 git 或直接在 GitHub 上更改它,而不干扰其他提交?
您不能使用
git commit --amend
,因为这不是您最近的提交。
您可能想要进行变基,类似于
git rebase -i HEAD~3
其中 3 是您想要返回的提交数量。
这是进行交互式变基。在打开的屏幕或文本窗口中,将
pick
替换为 reword
。
在下一个屏幕或文本窗口中,您将能够更改提交消息。
执行变基会更改提交哈希值,因此您需要执行
git push --force-with-lease
,否则您的更改将被服务器拒绝。
在进行潜在破坏性提交时,--force-with-lease
通常比--force
更安全。
请参阅发布的链接 @Myffo 中的修改旧的或多个提交消息。
要更改旧提交的消息,您可以使用其中之一
git rebase -i HEAD~4
(4 是任意数字,而不是 4,您必须使用要更改的提交的排名,最新提交被视为 1)
或
git rebase -i (SHA of the commit you want to edit)^
例如。 git rebase -i 993ff4750f38b701383575a95b4efea54cc77658^
(别忘了在你的sha末尾添加“^”符号)
这些命令将在默认文本编辑器中显示最新提交。 在该文本编辑器中找到您想要更改的提交,并将“pick”替换为“reword”。保存退出后。将弹出另一个窗口供您更改消息。
可以用不同的消息替换提交,而不影响现有的提交哈希值,而不是重新定基并强制推送修改后的分支。
语法如下:
git replace --edit <commit>
这将打开编辑器并显示如下内容:
tree 430db025986d2bf8791be16b370ec37a00f6924b
parent 77efdb98a6e021ca81cd96f7c8c05d25c09e0ad4
author John Doe <[email protected]> 1698219601 +0200
committer John Doe <[email protected]> 1698219601 +0200
<initial commit message>
修改消息并保存。
这需要 Git 2.1 或更高版本。