我需要更改一条旧的提交消息。考虑到我之后已经提交了一些其他的提交,有没有一种方法可以在不影响其他提交的情况下通过git或直接在GitHub上更改它?
slhcrj9b1#
你不能使用git commit --amend,因为它不是你最近的提交。你会想做一个变基,类似于
git commit --amend
git rebase -i HEAD~3
字符串其中3是你想要返回的提交数。在打开的屏幕或文本窗口中,将pick替换为reword。在下一个屏幕或文本窗口中,您将能够更改提交消息。做一个rebase会改变提交哈希,所以你需要做一个git push --force-with-lease,否则你的修改会被服务器拒绝。--force-with-lease在执行潜在的破坏性提交时通常比--force更安全。请参阅修改旧的或多个提交消息从链接@Myffo张贴。
pick
reword
git push --force-with-lease
--force-with-lease
--force
atmip9wb2#
要更改旧提交的消息,您可以使用
git rebase -i HEAD~4
字符串(4是一个任意的数字,而不是4,你必须使用你想要改变的提交的排名,大多数当前提交被认为是1)或
git rebase -i (SHA of the commit you want to edit)^
型例如git rebase -i 993 ff 4750 f38 b701383575 a95 b4 efa 54 cc 77658 ^(don别忘了在你的sha结尾加上“^”符号)这些命令将在默认的文本编辑器中显示最新的提交。在该文本编辑器中找到您想要更改的提交,并将'pick'替换为'reword'。在您保存并退出后。另一个窗口将弹出,让您更改消息。
fdbelqdn3#
与重定基和强制推送修改后的分支不同,可以用不同的消息替换提交,而不会影响现有的提交哈希。语法如下所示:
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 push origin 'refs/replace/*' git fetch origin 'refs/replace/*:refs/replace/*'
型这需要Git 2.1或更高版本。https://git-scm.com/docs/git-replace
3条答案
按热度按时间slhcrj9b1#
你不能使用
git commit --amend
,因为它不是你最近的提交。你会想做一个变基,类似于
字符串
其中3是你想要返回的提交数。
在打开的屏幕或文本窗口中,将
pick
替换为reword
。在下一个屏幕或文本窗口中,您将能够更改提交消息。
做一个rebase会改变提交哈希,所以你需要做一个
git push --force-with-lease
,否则你的修改会被服务器拒绝。--force-with-lease
在执行潜在的破坏性提交时通常比--force
更安全。请参阅修改旧的或多个提交消息从链接@Myffo张贴。
atmip9wb2#
要更改旧提交的消息,您可以使用
字符串
(4是一个任意的数字,而不是4,你必须使用你想要改变的提交的排名,大多数当前提交被认为是1)
或
型
例如git rebase -i 993 ff 4750 f38 b701383575 a95 b4 efa 54 cc 77658 ^
(don别忘了在你的sha结尾加上“^”符号)
这些命令将在默认的文本编辑器中显示最新的提交。在该文本编辑器中找到您想要更改的提交,并将'pick'替换为'reword'。在您保存并退出后。另一个窗口将弹出,让您更改消息。
fdbelqdn3#
与重定基和强制推送修改后的分支不同,可以用不同的消息替换提交,而不会影响现有的提交哈希。
语法如下所示:
字符串
这将打开编辑器并显示如下内容:
型
修改消息并保存。
修改后的引用将必须被显式地推送和获取:
型
这需要Git 2.1或更高版本。
https://git-scm.com/docs/git-replace