如何使用git顺序合并分支与清晰的历史记录?

时间:2016-10-31 22:42:08

标签: git merge rebase atlassian-sourcetree sourcetree

我想要合并分支developupgraded。分支upgraded来自develop但是大约有50个新提交(主要与其他分支合并),upgraded中有更多更改。所以我想按顺序将develop合并到upgraded(通过提交提交),因为有些API更改需要更新和合并冲突。但是,当我通过简单地合并来自develop的提交来实现它时,它会为图上的每个提交创建新连接。我真的不想要50个不必要的图形路径...

如何避免这种疯狂的图形连接? 最乐意使用Atlassian Sourcetree GUI。

enter image description here

2 个答案:

答案 0 :(得分:1)

如果你已经完成了工作并且只想将所有合并压缩在一起,请参阅Squashing a sequence of small merges from master into my branch with git while keeping reference to master?(这使用命令行;它在GUI中可能是不可能的,因为GUI旨在使其易于使用做通常的事情,很少考虑到不寻常的事情。)

如果您希望将来执行此操作,git imerge(如jthill's comment中所述)可以完成此任务。同样,它从命令行运行。

答案 1 :(得分:0)

创建一个辅助分支develop-rebase,它指向与develop相同的树。保留原始develop分支,以防出现任何问题。  然后,在develop-rebase之上重新定义upgraded,它会按顺序应用每个提交。以交互方式进行,以便您有机会在每次提交后进行测试。

希望您在此过程中获得干净状态并应用一些补丁。

如果对你来说足够了,你可以在这里停下来。但是,如果您想要从develop合并到upgraded而没有中间重定位,则可以从新develop-rebasedevelop获取差异,将其应用于{{1然后摆脱develop

然后,从该补丁中进行不同的原子提交,解释您如何修改develop-rebase以使其与develop合并,然后合并。