我在与师父分开的一个分支上工作了一段时间。在某些时候,我完成了我在分支上所做的工作,我想将它合并回主人。为了让我自己了解最新的主人,并确保在我合并我的分支之前一切正常,我做了git checkout master
,git pull origin master
,git checkout mybranch
,git merge master
。做了一些调整,很棒,现在我对代码进行了最新的更改,这一切都很好......但是现在我有一大堆提交消息,这些消息来自其他一直在分支机构工作而与我无关的人更改,这掩盖了我在代码中所做的更改。
我真的想摆脱那些外部提交消息(也许是我工作时自己制作的许多更普通的提交消息)。但我决定将我在分支上完成的所有工作简单地折叠成一个“已实现的X功能”提交消息,以便我的工作和主分支之间的所有更改都清晰,并且没有在提交历史中存在大量混乱。
可能使事情变得复杂的是,在我意识到我的提交历史记录的状态之前,我已经将其推送到原点,因此需要将此修复程序应用于远程存储库。
感谢您的帮助!!
答案 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选项不会提交更改,因此如果您不想要更改,则可以删除一些更改,然后提交。提交消息预先填充了来自分支的所有提交消息,这非常方便。
请记住,这将被记录为主分支上的单个提交,在提交图中不会有合并分支。