2017-02-28 95 views
0

一个反对git rebase的观点可能是它是一个比合并更复杂的过程,如果多个开发人员共享一个功能分支,中游rebases意味着所有其他开发人员必须删除他们的本地分支并从中央获取全新副本存储库(或者开始使用差异分支)。将git merge和rebase结合起来会发生什么?

在多个开发者共享一个分支的情况下,git merge是一个更简单的工作流程。但是当功能完成后,最终合并到“掌握”呢?如果不是一路沿用“rebase”与master保持同步,你会一直使用'merge',但在最终交付给'master'时,你会使用交互式'rebase'来实现一个干净的线性历史记录并压扁无趣的承诺?特别是,当'合并'提交重播或git如何处理时会发生什么?

回答

1

如果你最终推动力,Rebase只是一个问题,但如果你这样做,任何操作都是一个问题。在您结束时将目标分支重新绑定的情况下,git处理完全正常,只是重放合并,如果相同的合并发生冲突,可能会发生冲突。对于大多数情况下,如果相应的合并也会有问题,那么重新分配只会产生问题。

1

通常,您会希望避免重新扣款任何已通过推送公开的提交。在你的情况中,你可以避免这种情况,因为你正在重新设计一个临时特性分支,并且因为你可以非常清楚地与你的团队进行交流(即在那个分支上工作的那些分支),一旦开发结束,分支基本消失,已经重新进入你的主人。

除此之外,重新绑定包含合并的分支并没有真正的问题。从主服务器提交的合并提交将从您的重定向分支中简单消失(因为您已重新组合,这些更改已经集成),并且您可以轻松地运行交互式合并,以便后续清理历史记录。

+0

我遇到的理由是,难以让所有其他团队成员对齐rebase。我不确定这是否真的会成为问题。他们需要能够理解和应对突然偏离本地的远程分支机构。 – Bryji

+1

是的,如果分支真的处于其生命的尽头(由于合并或重新分配给主分支),您只会执行此操作。因此,理想情况下,在重新绑定之后,您将推送主分支并删除远程功能分支。这样,其他成员不应该有真正的问题 - 除了当然一般的混淆,这就是为什么你应该沟通这个工作流程。除此之外,他们当地的(未经过重新设计和过时的)分支不会分手,而只会过时。 – poke