我有一个非常大的分支,一个非常庞大的软件坐在git存储库中。由于我们的版本和上游版本有很大分歧,因此决定将其移植到当前版本。
那么,最好的方法是什么?有没有办法用一个标志来标记一个特定的git提交,通知已经移植了?或者我应该尝试一些复杂的变基计划?
我主要是从物流的角度提问,因为我肯定会将一些功能推向上游(因此对当前的头部进行了重新设计),但大多数代码需要更新并保存在我们的分支中
答案 0 :(得分:4)
听起来你前面有一个棘手的合并!我建议你看看git imerge
,这有助于解决大型合并问题,将它们分解成更小的部分。引用项目页面:
git-imerge
有两个主要设计目标:
- 通过查找和展示合并冲突,将合并冲突解决的难度减少到不可避免的最低限度 最小的冲突:每个分支的一次提交引入的更改之间的冲突。
- 允许合并在正在进行时保存,测试,中断,发布和协作。
如果您按照git-imerge
进程操作,则会向您提供一系列相对较小的合并冲突,您可以逐个修复。我鼓励您在每个解决步骤之后运行任何自动化测试(或至少编译您的项目),以降低在出现错误时引入错误的风险。
您是否希望此进程的最终结果是合并提交,或者您的提交到上游分支的rebase由您决定,git imerge
允许您选择这些选项中的任何一个(以及其他一些选项)作为一个清理步骤,一旦你完成了实际组合变化的困难部分。