[英]git: share the work of merging two branches
我想合并到非常不同的Git分支。 这将是很多工作,因为他们有几百个冲突。
什么是最好的方式,所以也许其他人可以帮助我,也可以合作这个?
通常,我只是做'git merge ...'然后经历所有冲突,解决它们,然后进行提交。 但那只是当地的。
解决冲突的工作可能需要几天时间。 我想在我工作的时候在网上完成我的更改。
如果您希望其他人帮助您,您需要将这些分支作为远程分支放在某个可访问的服务器上。
您不必一次完成所有工作。 分支机构在某个时间点出现分歧。 所以你从那里开始工作,但逐渐合并提交。
例如,您有主分支和非常不同的分支,称为b。
如果你切换到master并执行git merge b
你会遇到很多冲突。
所以你开始查看master和b分开的历史。 然后在b分支中进行第三次提交并合并它
git merge <sha_in_b_branch>
你只会遇到一些冲突。 解决它们,提交,将您的更改推送到远程分支,然后其他人可以继续。 接下来几次提交,解决冲突,提交推送等。继续这样直到你来到b分支的负责人。
当最近遇到这个问题时,我决定将分歧的合并分支倒回到最后一个常见提交(我用git cherry -v upstreambranch divergedbranch
)并删除所有提交,我不想合并。 (例如,那些已经存在于主分支中的提交,如果使用不同的散列。)
所以从提交列表中
git rebase -i --onto lastcommoncommit upstreambranch divergedbranch
我删除了列出的所有提交
git log lastcommoncommit..upstreambranch
这样做的结果是一个干净但略显过时的主题分支,其中仅包含尚未成为upstreambranch一部分的提交。
从这一点开始,主要有两种方法:
git cherry-pick
提交到upstreambranch的HEAD,从最古老的未合并提交开始。 git rebase --onto upstreambranch@{4 weeks ago} upstreambranch
的upstreambranch,如git rebase --onto upstreambranch@{4 weeks ago} upstreambranch
完成rebase / cherry-pick会话后,您将更改推送到集成分支,其他人可以继续使用相同的过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.