是否可以在另一个提交中将来自不同提交的两个文件与给定的基合并



我遇到了一个问题,当两个分支长期独立开发时,其中一个文件被移到另一个目录中
假设我们有一个名为src/dir1/Main.cpp的文件和两个具有公共base的分支branch1branch2
然后它们被移到branch1中的文件,现在它被称为src/dir2/Main2.cpp
当然,两个分支也修改了该文件独立
现在我想在branch1之上重新设置branch2的基础,并将这两个更改都保留在文件src/dir1/Main.cpp(原始更改(中。

git checkout branch2
git rebase branch1

Git询问我是想使用修改版还是删除版,我选择删除版。然后,我想继续以base:src/dir1/Main.cpp为基础合并文件branch1:src/dir1/Main.cpp<old_branch2_hash>:src/dir2/Main2.cpp。是否可以使用内置的git命令(可能调用默认的mergetool(或不使用类似bash的$()语法?我希望它能在linux和windows系统上运行,而不需要手动复制这些文件并在它们上调用合并工具。

根据git合并文件,尝试

git cat-file -p branch1:src/dir1/Main.cpp > current.cpp
git cat-file -p old_branch2_hash:src/dir2/Main2.cpp > other.cpp
git cat-file -p base:src/dir1/Main.cpp > base.cpp
git merge-file current.cpp base.cpp other.cpp

合并结果被写入current.cpp。可能会发生冲突。解决冲突(如果有的话(后,可以复制current.cpp来覆盖目标文件。

最新更新