如何更改旧的提交消息?

Lua*_*ima 12 git version-control commit github git-commit

我需要更改旧的提交消息。考虑到我之后做了一些其他提交,有没有办法通过 git 或直接在 GitHub 上更改它,而不干扰其他提交?

Soc*_*j07 15

您无法使用git commit --amend,因为这不是您最近的提交。

你会想要做一个变基,类似于

git rebase -i HEAD~3
Run Code Online (Sandbox Code Playgroud)

其中 3 是您想要返回的提交数量。

这是在进行交互式变基。在打开的屏幕或文本窗口中,替换pickreword

在下一个屏幕或文本窗口中,您将能够更改提交消息。

执行 rebase 会更改提交哈希值,因此您需要执行 a 操作git push --force-with-lease,否则您的更改将被服务器拒绝。

--force-with-lease--force通常比进行潜在破坏性提交更安全。

请参阅来自发布的链接 @Myffo 的修改旧的或多个提交消息。


小智 7

要更改旧提交的消息,您可以使用

git rebase -i HEAD~4
Run Code Online (Sandbox Code Playgroud)

(4 是任意数字,而不是 4,您必须使用要更改的提交的排名,最新提交被视为 1)

或者

git rebase -i (SHA of the commit you want to edit)^
Run Code Online (Sandbox Code Playgroud)

前任。git rebase -i 993ff4750f38b701383575a95b4efea54cc77658^

(不要忘记在 sha 末尾添加“^”符号)

这些命令将在默认文本编辑器中显示最新提交。在该文本编辑器中找到您想要更改的提交,并将“pick”替换为“reword”。保存退出后。将弹出另一个窗口供您更改消息。


Emm*_*urg 6

可以用不同的消息替换提交,而不影响现有的提交哈希,而不是重新设置基址并强制推送修改后的分支。

语法如下:

git replace --edit <commit>
Run Code Online (Sandbox Code Playgroud)

这将打开编辑器并显示如下内容:

tree 430db025986d2bf8791be16b370ec37a00f6924b
parent 77efdb98a6e021ca81cd96f7c8c05d25c09e0ad4
author John Doe <johndoe@example.org> 1698219601 +0200
committer John Doe <johndoe@example.org> 1698219601 +0200

<initial commit message>
Run Code Online (Sandbox Code Playgroud)

修改消息并保存。

然后必须使用以下命令显式推送和获取修改后的引用:

git push origin 'refs/replace/*'
git fetch origin 'refs/replace/*:refs/replace/*'
Run Code Online (Sandbox Code Playgroud)

这需要 Git 2.1 或更高版本。

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

  • 然而,要将替换提交分发给其他方,需要付出额外的努力。特别是,必须推送和获取“refs/replace”层次结构。 (3认同)