我的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
(改编自此答案。)