我正在尝试创建现有存储库的 gitsubtree,例如:
-> 项目A/项目B
项目 A 是父项目,我想将项目 B 添加为 git 子树。
git subtree -P projectB ssh://git@github.com/projectB.git master
但它失败了,并显示以下消息:
前缀“projectB”已经存在。
我不想再次下载所有存储库,我只想将此目录添加到我的 gitsubtree 中。
这个目录项目 B 没有被项目 A git 跟踪。
提前致谢
我正在尝试创建现有存储库的 gitsubtree,例如:
-> 项目A/项目B
项目 A 是父项目,我想将项目 B 添加为 git 子树。
git subtree -P projectB ssh://git@github.com/projectB.git master
但它失败了,并显示以下消息:
前缀“projectB”已经存在。
我不想再次下载所有存储库,我只想将此目录添加到我的 gitsubtree 中。
这个目录项目 B 没有被项目 A git 跟踪。
提前致谢
您可以使用 vanilla 将 projectB 添加为 projectA 的子树git
(您不需要git subtree
)。
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
解释
projectA
仓库。projectB_remote
使用 projectB 的 url 调用的新遥控器。projectB_remote
而不合并。projectB_branch
;带入projectB_remote/master
文件。projectA/master
。projectA/master
其中包含projectB_branch
.结果目录结构
projectA
projectB
other.txt
project.txt
A.txt
files.txt
请参阅http://www.git-scm.com/book/en/v1/Git-Tools-Subtree-Merging
添加子树时,似乎前缀(您将在其中添加子树的子目录)不可能已经存在。
我通过在此子目录存在之前签出提交来解决此问题,执行 git subtree add,然后与包含我的旧子目录内容的分支合并。