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

时间:2012-12-12 19:19:46

标签: git

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

例如:

project_a/
  /.git
  /src/somefile.cpp

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

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

2 个答案:

答案 0 :(得分:3)

如果您的文件具有相同的名称但位于不同的文件夹中(假设您将project_b合并到子目录中),那么您必须按以下方式执行樱桃选择

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

答案 1 :(得分:2)

您可以将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

Adapted from this answer。)

相关问题