我们的代码库从不同的代码库导入文件,并修改它们以适应我们的代码库。出于实际原因(与问题无关),我们无法分享代码库的历史。
如何执行导入文件的3向合并?其中:
我最好使用git来执行此合并,以避免依赖于外部工具,但git与在这种情况下不存在的共享历史密切相关,而且我不会这样做。我知道如何强制git只在文件中进行合并而没有历史记录。
答案 0 :(得分:2)
您可以使用git merge-file
(https://git-scm.com/docs/git-merge-file)逐个文件地执行此操作。如果涉及许多文件,这可能非常繁琐。
或者,您可以创建临时"集成回购"在哪里进行合并。
mkdir merge-repo
cd merge-repo
git init
# copy in the previous imported version of each file
git add .
git commit -m base
git branch source
# copy in the current version of each file with your changes (note you're still on master)
git add .
git commit -m ours
git checkout source
# copy in the current version of each file from the source repo
git add .
git commit -m theirs
git checkout master
git merge source
# copy the merged files back to your repo
cd ..
rm -rf merge-repo #if you don't want to keep it around, you don't need it any more
后者可能有更多可移动的部分,但我敢打赌你可以编写脚本,并且比逐个文件分阶段提出单个merge-file
命令要简单得多。