git如何合并并从哪个分支中选择我想要的文件

时间:2018-07-19 17:56:41

标签: git version-control

我有

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命令中获取多个文件,将不胜感激。谢谢

2 个答案:

答案 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假定结果是父历史记录的正确且完整的合并。这不是唯一可能的合并,您可以合并同一父级的其他合并,并通过合并同一父级的不同合并来实现有用的合并臂效果。