git: "right way" 是什么来修复不正确的推送提交消息

git: What is the "right way" to fix an incorrect pushed commit message

我写了一条错误的提交消息,我已经将它推送到远程。已经处理这个问题的问题不在少数:

只是一对。但它们似乎都以 git push --force 结束,并且附加警告说明为什么这是一个坏主意 - 它编辑了历史,这意味着使用存储库的其他人在尝试拉取时都会受到影响。他们似乎没有说明 "right" 要做的事情是什么。

那么推荐或 "correct" 处理这种情况的方法是什么?我以为我可以用 git commit --allow-empty 添加一条额外的消息,但据说有“rarely a good reason to do this”。 --allow-empty 确实是解决问题的正确方法吗?如果不是,什么是正确的方法?

注意:"right way" 的工作可能涉及"admitting I screwed up"。作为我正在寻找的示例,git tag 手册页有一个 discussion on retagging 推送标签。它清楚地讨论了重新标记错误标记的提交的方法,给出了推荐的操作过程和 --force-ish 做事方式。

你可以做的一件事是在提交中添加一个 note to the commit, e.g. git notes add -m "Here is my note" head~1. This will then show up in the git log without actually changing the commit. Another alternative is to add an annotated tag,例如git tag -a tag-summary -m "Here are the tag details" head~1。我更喜欢标签方法,因为标签会显示在大多数工具的日志视图中,而注释则不会(尽管它们会显示在 git log 中)。