我们使用几个具有相同工作流程的git存储库,涉及两个分支,并且想知道如何最好地“从一个”提交“同步”提交。
简单地说,我们的git存储库包含:
我们也有一些不太常见的情况:
我们可以将其说明如下(commit 5'
是来自1.0分支的提交5
的选择):
-1--2-3--5'--7-- (master) \ 4--5---6-- (1.0)
我们经常需要确保1.0分支上的所有错误修正都在主分支上可用。
这样做时,我们的需求是:
因此,我们的目标是:
-1--2-3--5'--7--4'--6'-- (master) \ 4--5---6-- (1.0)
在我们看来,无论如何,这可能是git或任何在公共git仓库中维护和开发软件的人的典型用例。
你会怎么做?
谢谢!
答案 0 :(得分:3)
所有选择都有起伏不定,做出明智的决定将严重依赖于阅读您可能找到的所有内容。最大的问题是git并非真正从头开始设计,而是专注于维护多个“长期”分支机构,您可能需要在分支机构中维护多年的变更。因此,当分支机构之间的代码库发生重大变化时,您最终可能会遇到合并问题。
如果您阅读了大多数工作流文档,那么您反复阅读的最重要的事情之一是:“将修补程序应用于错误修复分支并将它们向上合并”,从来没有反过来。
这就是我提出的解决方案,我为Net-SNMP项目提出了解决方案。我写了一个你可能会阅读的Git WorkFlow [in Net-SNMP]页面,因为它包含了圆圈和箭头,试图解释一些错误修复分支的工作原理。
然而,合并的缺点是历史变得非常非线性。这使得阅读“git log”,无论你尝试多少选项并抛出它,都会让人感到困惑。我们的一位开发人员慷慨地指出,我们需要强制使用'git merge --log',这至少会对历史有所帮助。
祝你好运!