我有两个GIT分支: 与Pluto / test.txt B与Pippo / test.txt
我只希望将分支B中的文件(test.txt)合并到A中。
我尝试使用:
git checkout A
git checkout B Pippo/test.txt
但这会创建一个包含文件的文件夹,例如: 带有Pluto / test.txt和Pippo / test.txt。 但是我想合并文件
答案 0 :(得分:2)
尝试git merge-file
。它以三向合并的方式合并两个文件。
git merge-file <current-file> <base-file> <other-file>
在您的情况下,current-file
是A的Pluto/test.txt
,other-file
是B的Pippo/test.txt
。对于base-file
,您可以发现Pluto/test.txt
首次引入了A的哪个提交git log A --reverse -- Pluto/test.txt
。输出中的第一个提交就是我们想要的,并假设它是abc123
。
检出分支A,以便有current-file
。
git checkout A
检索base-file
。
git cat-file -p abc123:Pluto/test.txt > base.txt
检索other-file
。
git cat-file -p B:Pippo/test.txt > other.txt
运行三向文件合并。
git merge-file Pluto/test.txt base.txt other.txt
打开Pluto/test.txt
。如果有任何冲突,请解决。保存并退出。添加并提交更改。
git add Pluto/test.txt
git commit
清洁base.txt
和other.txt
。
rm base.txt other.txt
答案 1 :(得分:1)
git不会合并路径不同的文件。
如果两个文件都在相同的确切路径上,但是分支上的路径不同,则可能会发生文件合并 。
但是,即使您在每个分支中都拥有Pluto/test.txt
,将B合并为A也不一定会导致合并。如果它们都在同一位置(代码块)与merge base不同,将仅。
也许考虑使用任何合并工具进行手动合并,然后在所需的分支上提交这些更改?