6

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

ProjectA
+ a
+ b

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

现在我想将ProjectBfoo中的目录包含到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
4

1 回答 1

5

我认为这无法通过git subtree. 也许git filter-branch是你需要的:

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

改写b只包含的历史foo

git filter-branch --prune-empty --subdirectory-filter foo b_master

或使用git subtree split

git subtree split -P foo --branch foo

并将其添加为子树

git subtree add --prefix=project_b --squash b_master or foo
于 2013-05-17T07:29:35.763 回答