繁体   English   中英

git:分享合并两个分支的工作

[英]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一部分的提交。

从这一点开始,主要有两种方法:

  1. 你可以从outdatedbutcleantopicbranch git cherry-pick提交到upstreambranch的HEAD,从最古老的未合并提交开始。
  2. 将outdatedbutcleantopicbranch重新定位到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM