Git分支/重塑良好做法

时间:2010-04-08 17:13:31

标签: git dvcs branch git-branch

我有以下情况:

3个分支:
- 硕士 - MyBranch为了开发系统的新功能而分支Master - MyBranchLocal将MyBranch分支为分支的本地副本

MyBranch受到其他开发人员的反对和推动(他们正在开发与我相同的功能)。

作为MyBranch分支的所有者,我希望通过重新定位使其与Master保持同步。我还需要将我对MyBranchLocal所做的更改与MyBranch合并。

这样做的好方法是什么?

到目前为止我尝试了几种可能的场景:

予。
1.将更改提交到MyBranchLocal
2.将MyBranch重新对抗Master 3. Rebase MyBranchLocal对抗MyBranch
4.将MyBranch与MyBranchLocal合并

II。
1.将更改提交到MyBranchLocal
2.将MyBranch与MyBranchLocal合并
3.将MyBranch重新对抗Master 4. Rebase MyBranchLocal对MyBranch

III。
1.将更改提交到MyBranchLocal
2.将MyBranch重新对抗Master 3.将MyBranch与MyBranchLocal合并
4. Rebase MyBranchLocal对MyBranch

我已经知道场景III似乎正在破坏提交历史很多,可能会重复提交。

你有什么经历?您建议使用哪些方案来最小化合并工作并保持历史记录清洁?

2 个答案:

答案 0 :(得分:4)

我个人的建议。这一个专注于拥有一个直接的提交历史,并且在“更具体”的分支上失败(你最好搞乱你的本地分支而不是功能分支)。

  1. 提交更改为MyBranchLocal
  2. Rebase MyBranchLocal与MyBranch
  3. 将MyBranch与MyBranchLocal合并(应该快进) - MyBranch = Local
  4. Rebase MyBranch对抗Master
    1. (可选)Merge Master与MyBranch合并(也应该是快进)
  5. Rebase MyBranchLocal与MyBranch

答案 1 :(得分:4)

我在链接到Linus email后发现了这个问题。根据电子邮件 - 在一些公共网站上发布您的历史记录后,您不应该因为可以破坏其他人的历史记录而改变。因此,MyBranchLocal的rebase是可以的,但对于MyBranch(与其他开发人员共享)则不行。