2015-06-20 24 views
3

我写了一个不正确的提交消息,并且我将它推送到远程。有不小的数目已经处理这个问题:git:什么是“正确的方法”来修复不正确的推送提交消息

只是一对夫妇。但它们似乎都以git push --force结尾,并且还有一个额外的警告,说明为什么这是一个糟糕的主意 - 它会编辑历史记录,这意味着使用存储库的其他人在尝试提取时会受到影响。他们似乎没有说出“正确”的事情是什么。

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

注意:做事情的“正确方式”可能涉及“承认我搞砸了”。作为我正在寻找的示例,git tag手册页有一个discussion on retagging推送标签。它清楚地讨论了重新标记错误标记的提交的方法,给出了推荐的行动方案和做事的方式。

+1

这取决于您的项目贡献准则,这可能是隐含的。有时可以强制推送一个新的提交,其他时间不会。 – Chris

+0

@Chris这不是一个官方的项目 - 这是一个在github上托管的个人项目,但是我认识的很多朋友也从中获益。所以除了我自己设定的标准之外,没有其他的指导方针。无论如何,我觉得这应该是一个推荐的行动方案,因为这可能是一个很常见的错误(通过其他答案的票数)。 – Praveen

+0

Git在*中不强加工作流程*时非常一致。您可以自由地在没有任何遥控器的情况下工作,也可以使用100.您可以自由地签署标签和提交,或不提供。你可以自由地改变共享提交,或禁止它。项目维护人员可以选择他们希望如何使用该工具。同样,作为项目维护者,由您决定是否要强制推送以简单地修复提交消息。就我个人而言,我会避免这种情况,但只有在这种情况下,您才能决定是否适合您。 – Chris

回答

6

您可以做的一件事就是将note添加到提交中,例如, git notes add -m "Here is my note" head~1。然后这将显示在git log而不实际更改提交。另一种选择是在提交中添加一个annotated tag,例如git tag -a tag-summary -m "Here are the tag details" head~1。我更喜欢标记方法,因为标记显示在大多数工具的日志视图中,而笔记却没有(尽管它们确实出现在git log中)。

+1

我喜欢加入笔记的想法。但是如果你所说的是真实的,那么许多工具不会显示该笔记,我不相信这是最好的方法。如果我没有得到更好的答案,我会接受它。我不太喜欢添加标签的想法,因为我认为标签有着根本不同的目的,即版本控制。在标签上写入提交消息的修正可以修复问题,但我觉得它很不吸引人。 – Praveen

+0

它看起来像笔记_is_实际上是要走的路。从[git-scm博客](https://git-scm.com/blog/2010/08/25/notes.html)上看来,这些笔记看起来似乎是为了保存更多的提交信息,而不必更改提交SHA。你说得对,并非所有的工具都会显示笔记 - 例如,github没有。 'gitk'的确如此,而且由于'gitk'是我用来以图形方式查看我的历史记录的工具,所以我对这个解决方案非常满意。希望未来有更多的工具支持笔记,推拉笔记的git界面将会得到改善。非常感谢你! – Praveen

相关问题