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

时间:2013-07-24 19:18:49

标签: git repository git-subtree

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

- >了projectA /项目B

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

  

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

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

  

前缀'projectB'已经存在。

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

Project A git。

不会跟踪此目录项目B.

提前致谢

2 个答案:

答案 0 :(得分: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

解释

  1. 输入本地projectA个回购。
  2. 使用projectB&#39网址添加名为projectB_remote的新远程。
  3. 在不合并的情况下获取projectB_remote
  4. 创建并签出projectB_branch;引入projectB_remote/master个文件。
  5. 返回projectA/master
  6. projectA/master中创建一个子树,其中包含projectB_branch的结帐。
  7. 结果目录结构

    projectA
        projectB
        other.txt
        project.txt
        A.txt
        files.txt
    

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

答案 1 :(得分:2)

添加子树时,似乎不存在前缀(您将在其中添加子树的子目录)。

我通过在此子目录存在之前签出提交,执行git子树添加,然后与包含旧子目录内容的分支合并来解决此问题。