git: "right way" 是什么来修复不正确的推送提交消息
git: What is the "right way" to fix an incorrect pushed commit message
我写了一条错误的提交消息,我已经将它推送到远程。已经处理这个问题的问题不在少数:
- How to modify existing, unpushed commits?
- Accidentally pushed commit: change git 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
中)。
我写了一条错误的提交消息,我已经将它推送到远程。已经处理这个问题的问题不在少数:
- How to modify existing, unpushed commits?
- Accidentally pushed commit: change git 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
中)。