git merge添加了大量的提交消息

时间:2013-11-27 16:29:42

标签: git

我在与师父分开的一个分支上工作了一段时间。在某些时候,我完成了我在分支上所做的工作,我想将它合并回主人。为了让我自己了解最新的主人,并确保在我合并我的分支之前一切正常,我做了git checkout mastergit pull origin mastergit checkout mybranchgit merge master。做了一些调整,很棒,现在我对代码进行了最新的更改,这一切都很好......但是现在我有一大堆提交消息,这些消息来自其他一直在分支机构工作而与我无关的人更改,这掩盖了我在代码中所做的更改。

我真的想摆脱那些外部提交消息(也许是我工作时自己制作的许多更普通的提交消息)。但我决定将我在分支上完成的所有工作简单地折叠成一个“已实现的X功能”提交消息,以便我的工作和主分支之间的所有更改都清晰,并且没有在提交历史中存在大量混乱。

可能使事情变得复杂的是,在我意识到我的提交历史记录的状态之前,我已经将其推送到原点,因此需要将此修复程序应用于远程存储库。

感谢您的帮助!!

5 个答案:

答案 0 :(得分:0)

我不知道如何修复它,但为了避免下次出现此问题,您可以使用git rebase remote/branch。 Rebase不会添加提交消息。

答案 1 :(得分:0)

在推动原点之后,这里真是一团糟,但下次最好的事情是:

git rebase -i HEAD~N (where N is the number of commits backwards)

然后您在已打开的编辑器中squash提交将它们整合到一个提交中,您可以阅读更多here

答案 2 :(得分:0)

  

但现在我有一堆提交消息

如果您对通过合并合并的提交不感兴趣,只需添加--first-parent,例如

git log --oneline --first-parent

答案 3 :(得分:0)

如果您不关心日志中的其他提交消息,您可以执行以下操作:

git log --author=<name or email>

希望它有所帮助!

答案 4 :(得分:0)

您可以将分支上的所有更改合并到一个提交中,并使用--squash选项进行合并,如下所示:

git checkout master
git merge --squash your-branch

使用squash选项不会提交更改,因此如果您不想要更改,则可以删除一些更改,然后提交。提交消息预先填充了来自分支的所有提交消息,这非常方便。

请记住,这将被记录为主分支上的单个提交,在提交图中不会有合并分支。