我们假设有两个git存储库,其中包含一些文件:
ProjectA
+ a
+ b
ProjectB
+ foo/x
+ foo/y
+ bar/z
现在我想将 ProjectB 中的目录foo
包含到 ProjectA 中。
据我了解git subtree add
,prefix
是接收存储库中应该有的路径,所以当我这样做时
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
答案 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