我有两个不同的本地git repo,我们称之为ab。它们都在我的主目录的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

现在repofoo中的a更改为repob的版本。然后您可以提交并推送:
git add foo
git commit -m 'change foo as the version in repo b'
git push

09-04 15:23
查看更多