是git的新手,我有这个愚蠢的问题 - 使用功能分支的正确方法是什么?
根据我收集的内容,我认为应该如何使用它:
获得了一些“开发”分支,从中检出分支:
"feature-1"
"feature-2"
"feature-3"
等
现在,一个或多个开发人员将在一个或多个功能分支上工作,当团队负责人希望将所有内容粘合在一起并进行测试时,他会将这些功能合并回“开发”主干。 但是,git似乎缺乏从每个功能分支中选择保留更改的能力(尝试递归,耐心和其他所有合并策略),所以最终,有时每个分支都会覆盖之前的分支合并回到'开发'。 随着开发人员继续在他们的分支机构工作并且团队领导者不时尝试将它们合并到“开发”中以结合变化,事情变得更加糟糕。
显然,这不是分支功能的正确方法。但那么正确的方法是什么呢?
感谢
编辑:
为了进一步说明,让我们考虑一下我们在开发分支中有这些文件:
fileA (develop)
fileB (develop)
fileC (develop)
现在合并回“feature-1”,它只触及fileA:
fileA (conflict, theoretically solvable by the recursive/theirs strategy)
fileB (develop)
fileC (develop)
接下来合并“仅触及fileB的”feature-2“:
fileA (overwritten by feature-2!!!)
fileB (conflict, theoretically solvable by the recursive/theirs strategy)
fileC (develop)
如何处理fileA?我希望它保留它的“feature-1”版本。
答案 0 :(得分:3)
好像你没有尝试过你所询问的内容,只是假设它是如何工作的。
如果这是真的 - 那么你的假设是不正确的。当您在git中合并2个分支时 - 它会计算源分支开头和HEAD
(或您正在合并的任何其他变更集)之间的差异,并将其应用于目标变更集。
因此,关注您的示例 - fileA
合并feature-2
时不会因为feature-2
中未修改{{1}}而对其进行任何修改。
所以根本没有问题。