如何从另一个git存储库的子目录中提取对文件的更改



我的git存储库中有一个文件,它有时会在另一个git存储中接收错误修复。我希望能够将这些承诺提取到我的回购中。

例如:

project_a/
/.git
/src/somefile.cpp
project_b/
/.git
/utils/converters/apples/bananas/src/somefile.cpp

我想将somefile.cpp的提交从project_b拉到project_a

如果您有相同名称但位于不同文件夹中的文件(假设您已将project_b合并到子目录中),则必须以以下方式进行挑选

git cherry-pick project_b/master --strategy=subtree

您可以将project_b添加为远程,然后从中提取和樱桃采摘

git remote add project_b /path/to/project_b/
git fetch project_b

现在你可以从project_b中挑选。如果您想要的提交位于project_b的主分支的顶端,只需执行

git cherry-pick project_b/master

或者,您可以绕过远程提取/樱桃采摘的东西,直接从project_b进行补丁,如下所示:

git --git-dir=/path/to/project_b/.git format-patch -k -1 
--stdout <commit SHA> somefile.cpp | git am -3 -k

(改编自此答案。)

最新更新