我可以从子目录中进行子树合并吗?

时间:2013-05-17 06:52:44

标签: git git-subtree

我们假设有两个git存储库,其中包含一些文件:

ProjectA
+ a
+ b

ProjectB
+ foo/x
+ foo/y
+ bar/z

现在我想将 ProjectB 中的目录foo包含到 ProjectA 中。

据我了解git subtree addprefix是接收存储库中应该有的路径,所以当我这样做时

git subtree add --prefix=project_b --squash URL_of_ProjectB

我最终会以

结束
ProjectA
+ a
+ b
+ project_b
  + foo/x
  + foo/y
  + bar/z

我可以以某种方式指定我只想获取foo获取此布局吗?

ProjectA
+ a
+ b
+ project_b
  + x
  + y

1 个答案:

答案 0 :(得分:5)

我认为git subtree无法实现这一点。也许git filter-branch就是你所需要的:

git remote add b <URL_TO_B>
git fetch b
git checkout -b b_master b/master

重写仅包含b的{​​{1}}的历史记录:

foo

或使用git filter-branch --prune-empty --subdirectory-filter foo b_master

git subtree split

并将其添加为子树

git subtree split -P foo --branch foo