Git的分支/变基最佳实践

8
我有以下情况:
3个分支: -主分支 -MyBranch为了开发系统的新功能而从主分支分支出来 -MyBranchLocal是我作为该分支的本地副本而分支出来的
其他开发人员正在对MyBranch进行反向操作和推送(他们正在与我一起开发同一功能)。
作为MyBranch分支的所有者,我希望通过rebase将其与Master保持同步。 我还需要将我对MyBranchLocal所做的更改合并到MyBranch中。
如何实现这一点?
我尝试过几种可能的方案:
I. 1.将更改提交到MyBranchLocal 2.将MyBranch重新基于Master 3.将MyBranchLocal重新基于MyBranch 4.将MyBranch与MyBranchLocal合并
II. 1.将更改提交到MyBranchLocal 2.将MyBranch与MyBranchLocal合并 3.将MyBranch重新基于Master 4.将MyBranchLocal重新基于MyBranch
III. 1.将更改提交到MyBranchLocal 2.将MyBranch重新基于Master 3.将MyBranch与MyBranchLocal合并 4.将MyBranchLocal重新基于MyBranch
我已经知道方案III似乎会混乱提交历史记录,可能会重复提交。
你有什么经验? 你推荐哪些场景以最小化合并工作并保持历史记录清洁?
2个回答

4

我的个人建议是:注重保持提交历史的连续性,在“更具体”的分支上失败(你最好搞砸本地分支而不是功能分支)。

  1. 将更改提交到MyBranchLocal
  2. 将MyBranchLocal与MyBranch合并
  3. 使用快进方式将MyBranch与MyBranchLocal合并 - MyBranch = Local
  4. 将MyBranch与Master进行变基
    1. (可选) 将Master与MyBranch合并(也应该使用快进方式)
  5. 将MyBranchLocal与MyBranch进行变基

4

我在点击Linus邮件的链接后发现了这个问题。根据该邮件 - 在你将你的历史记录发布到某个公共站点后,不应该进行再次变基操作,因为你可能会破坏其他人的历史记录。因此,对于MyBranchLocal分支,重新变基是可以的,但对于与其他开发人员共享的MyBranch分支则不行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接