我已经阅读了许多关于将文件拉入的帖子和文章 - 以各种方式 - 但它们似乎都没有按照我需要的方式合并。
建筑
我有回购“a”,我在本地使用其远程“a”对应物开发我的应用程序。还有另一个远程仓库“b”,它有我需要在我的“a”仓库保持最新的文件;但是,我也需要保持自己的变化。
使用案例
我已将本地更改提交到我的本地副本“a”上的主分支。我想从远程repo“b”的主分支上获取“components / config.js”的最新代码,并将它与我对本地repo“a”上的文件的更改合并到同一目录中(“我的主分支上的components / config.js“)。
合并文件的尝试失败
我不能git pull --allow-unrelated-histories remote-b master
,因为它会导致其他文件冲突(或添加/删除文件),我只想关注文件。
我可以git fetch remote-b
然后git checkout FETCH_HEAD -- components/config.js
,但这只是替换文件内容而不是合并。
问题
我仍然无法将另一个远程仓库中的一个指定文件的代码合并(不替换)到另一个仓库中的本地文件等效文件中。
答案 0 :(得分:0)
要合并文件,您需要3个不同的文件副本 - 基本版本,更改版本和要合并的当前版本。你只谈了2份 - 在回购" a"和" b"。
你必须决定什么是基本版本。这是回购中的旧承诺" b",让我们说它的承诺" b-old"。现在你在基础和更改的副本之间进行差异并保存diff:
cd repo-b
git diff b-old:components/config.js components/config.js > ../config.js.patch
然后你将补丁移动到回购" a"并将diff应用于当前版本:
cd repo-a
git apply ../config.js.patch
解决合并冲突和提交。