我目前已经将一个巨大的项目从 SVN 导入到 Git。
我决定压平所有分支,只保留 2 个。
主分支和分歧分支。
Master: A-B-C-D
\ X-Y: Bugfix
Diverged: E-F-G-H
diverged包含很多不同的源代码,但有些部分仍然源自master。当我们需要修复一些错误时,我们必须在 SVN 上手动修补 Master 和 Diverged。我想将 Bugfix 合并到 master 中(这里没问题)并将 Bugfix 合并到 Diverged 中。
请记住,我不希望将以前的提交插入到与主版本不同的版本中。所以ABCD应该被忽略。
我正在寻找的结构是这样的:
Master: A-B-C-D-X-Y
Diverged: E-F-G-H-X-Y
有人能帮我解决这个问题吗?
合并分歧的分支总是很痛苦的。
首先你要记住一些有用的git
命令将帮助您合并怪物。
git log HEAD..origin/master
- 将向您展示分支之间的差异。
如果简单的话git merge origin/master
尝试将合并拆分为一系列较小的任务是行不通的。我建议在当前主分支之上重新调整分支分支,以便将更改本地化:
git rebase remotes/origin/master
您最终会遇到解决每个冲突(可能在许多提交中)的无聊任务,但这些小任务比立即处理整个合并要简单得多。
Master: A-B-C-D-X-Y
Diverged: E-F-G-H-X-Y
git checkout diverged
git rebase master
变基完成后,您可以将 master 快进到分支的顶端:
Master: A-B-C-D-X-Y
\ E-F-G-H
空提交将被省略。
在最复杂的场景中,您可以在分支上使用交互式变基来重新排列提交。即,对于你的方案:
虽然这是手工工作,但它仍然是一种分而治之的策略。
阅读这篇文章以获得一些深入的想法:http://blog.springsource.org/2010/12/21/git-and-social-coding-how-to-merge-without-fear/ http://blog.springsource.org/2010/12/21/git-and-social-coding-how-to-merge-without-fear/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)