Git:仅编辑以前提交的消息

Git:仅编辑以前提交的消息

由于懒惰的原因,我用默认消息推送了一堆提交,现在它变得很麻烦,因为我真的不知道每个提交中都更改了什么。

如何仅编辑以前提交的消息并(如果可能)保留提交树?

答案1

要编辑一系列提交的提交消息,我运行

git rebase -i firstsha

其中firstsha是我要编辑的第一个提交的父提交的标识符。 (您可以在此处使用任何有效的引用,因此git rebase -i HEAD~4将显示最后四次提交。)

在打开的编辑器中,将要修改的提交上的所有“pick”条目更改为“reword”,然后关闭编辑器;然后,系统会要求您输入您选择的所有提交的提交消息。

请注意,这将要更改提交树,因为提交的哈希值将会更改。您将必须强制推送新树,或将其推送到新分支。变基合并时要小心;您需要使用-r( --rebase-merges),并阅读git rebase联机帮助页的“Rebasing merges”部分

要快速仅编辑最后一次提交,请运行

git commit --amend

(但要注意任何已经准备好的提交)。

答案2

您正在寻找的是git rebase

如果您只想更改之前的git commit消息,则只需使用以下内容:

git commit --amend

对之前的提交进行所需的更改,然后保存编辑。

但是,如果您需要更改较旧的提交,则需要使用rebase.

git rebase -i HEAD~N 

其中 N 等于您希望返回的提交数量,例如 2 或 12 或 6 等。

在这里你应该得到一个包含你的提交的文本编辑器。将选项从 更改为pickreword更改消息。

确定要更改的所有提交并适当更改其选项后,保存并关闭编辑器。然后对每个提交消息进行更改。一旦您满意,您就可以运行:

git push --force

尽管哈希值不同,但您应该维护您的 git 历史记录,因为您已经进行了所需的必要更改。以下是您应该查看的一些其他链接:

7.6 Git 工具 - 重写历史
GitHub 帮助 - 更改提交消息
StackOverflow - 关于更改旧提交消息的问题

相关内容