我有
branch 1
-file A
-file B
-file C
branch 2
-file A
-file B
-file C
我想合并分支1和2,以便在最终的分支文件A中来自分支1,文件C来自分支2。文件B对我来说是手动合并,我想一部分来自分支1,一些来自分支2。 我知道我可以合并
git checkout b1
git merge b2
git commit -b1
但是它将自动合并文件A和C,如何确保可以从指定的分支中获取不同的版本。真正的问题对我来说涉及更多文件,因此如果您可以解释如何在answer命令中获取多个文件,将不胜感激。谢谢
答案 0 :(得分:1)
注意,在测试存储库上对此进行测试,然后在执行此操作之前备份您的存储库
首先从branch1签出到新分支的过程称为“最终分支”
git checkout -b最终分支branch1
现在,我们将从branch2获取fileC
git checkout branch2-fileC.txt
现在您将拥有来自branch1的fileA和来自branch2的fileC
现在我们可以提交这些更改,最后,fileA将与branch1进行更改,而fileC将与branch2进行更改
git添加fileC.txt
git commit -m“最终提交”
如果要从branch2检出多个文件
git checkout branch2-file1 file2 file3 file4
答案 1 :(得分:1)
git checkout b1
git merge -n -s ours b2 # set merged parent to b2 but start with purely b1 content
git checkout -p b2:fileB # select b2 hunks from b2's fileB
git checkout b2:fileC # take all of b2's fileC
git commit # parents and content set properly, make the commit.
请注意,您并不需要从任何地方获取合并结果内容,您可以将合并结果设置为在工作流程中有意义的任何内容。请注意,便利工具是为了方便您而偏离工作流的“通常”样式,因此离他们后来的结果越有用。当您进行合并提交时,Git假定结果是父历史记录的正确且完整的合并。这不是唯一可能的合并,您可以合并同一父级的其他合并,并通过合并同一父级的不同合并来实现有用的合并臂效果。