Git - 如何在主题分支之间有效地共享代码?

时间:2011-01-30 07:53:11

标签: git merge

  • 简单地在分支之间进行合并会产生不需要的代码
  • 由于相关代码溢出多次提交,因此Cherry挑选没有帮助
  • 变基?不确定

1 个答案:

答案 0 :(得分:2)

对于两个分支之间真正常见的一组通用文件,一个解决方案确实是 rebase (在合并之前),但是假设:

  • 您尚未将您的分支机构推送到远程仓库(因为您即将更改历史记录)
  • 您对在某些提交中本地化的公共文件集进行了所有修改(换句话说,提交包含特定于主题的一些常见修改)

如果您的提交被明确识别为“常见”或“特定主题”,那么您可以更改其顺序,使具有公共代码的提交成为您分支上的最新提交。

从那里,它很容易:

  • 将这些提交改为“共同”分支
  • 合并当前主题分支中的该分支(以便取回所有这些更改)
  • 将同一个“共同”分支合并到另一个“topic2”分支(因为它也具有相同的共同演变)

请参阅git: how do I merge between branches while keeping some changesets exclusive to one branch?

t1a--t1b--ca--cb--t1c  # topic1 with some common commits in it 'ca' and cb'
t2a--t2b               # second topic branch
rebase --interactive分支上的

topic1

t1a--t1b--t1c'--ca'--cb'  # topic1 with some common commits in most recent position
t2a--t2b               # second topic branch

rebase --onto(或者只是重置HEAD的{​​{1}}和topic1,如果checkout -b common分支尚不存在的话),如“{ {3}}“

common

合并两个主题分支中的常见更改:

t1a--t1b--t1c'  # topic1 without any common code
ca''--cb''      # common branch
t2a--t2b        # second topic branch