如何创建现有存储库的gitsubtree?

ric*_*otk 10 git repository git-subtree

我正在尝试创建现有存储库的gitsubtree,例如:

- > projectA/projectB

项目A是父项,我想将项目B添加为git子树.

git subtree -P projectB ssh://git@github.com/projectB.git master

但它失败了,并显示以下消息:

前缀'projectB'已经存在.

我不想再次下载所有存储库,我只想将此目录添加到我的gitsubtree.

Project A git不跟踪此目录项目B.

提前致谢

Sha*_*tin 7

您可以使用vanilla git(您不需要git subtree)将projectB添加为projectA的子树.

cd projectA
git remote add projectB_remote git@github.com/projectB.git
git fetch projectB_remote
git checkout -b projectB_branch projectB_remote/master
git checkout master
git read-tree --prefix=projectB/ -u projectB_branch
Run Code Online (Sandbox Code Playgroud)

说明

  1. 输入本地projectA仓库.
  2. 添加一个projectB_remote使用projectB的url 调用的新远程.
  3. projectB_remote而不合并.
  4. 创建并结帐projectB_branch; 带进projectB_remote/master文件.
  5. 回到projectA/master.
  6. 创建一个projectA/master包含结帐的子树projectB_branch.

结果目录结构

projectA
    projectB
    other.txt
    project.txt
    A.txt
    files.txt
Run Code Online (Sandbox Code Playgroud)

http://www.git-scm.com/book/en/v1/Git-Tools-Subtree-Merging

  • 尽管此解决方案可能有效,但不能回答OP问题。 (2认同)