我有两个不同的本地git repo,我们称之为a
和b
。它们都在我的主目录的projects
文件夹中。我想在两个repo中得到一个特定文件之间的差异,我们称之为foo
,并将该差异应用到a
。
如果我从git diff ./foo ../b/foo > diff.diff
内部运行a
,我可以查看diff并确认它包含我要应用的更改,但是当我运行git apply diff.diff
时,会出现以下错误:
fatal: invalid path './foo'
如果我尝试运行
git diff ~/projects/a/foo ~/projects/b/foo > diff.diff
,则当我尝试应用diff时,会出现以下错误:error: home/ryan/projects/a/foo: No such file or directory
现在,我可以复制该文件以获得与应用diff相同的效果,但这不起作用有什么好的原因吗?
最佳答案
要比较repofoo
和repoa
之间的b
文件并将更改应用于repoa
,只需使用以下命令:
# In ~/projects/a (local repo a)
git remote add repob ~/projects/b -f
git diff master repob/master -- foo > diff.patch
git apply diff.patch
现在repo
foo
中的a
更改为repob
的版本。然后您可以提交并推送:git add foo
git commit -m 'change foo as the version in repo b'
git push