假设我有一个已经是git仓库的目录"sub",现在我想将其作为子树添加到我的新创建的超级目录"sup"中。
我已经搜索了文档,但所有的教程都是关于添加远程仓库或从现有提交中分离。我该如何将现有的git仓库添加到主git仓库中?
使用git subtree add --prefix=sub sub
会提示sub已经存在。
假设我有一个已经是git仓库的目录"sub",现在我想将其作为子树添加到我的新创建的超级目录"sup"中。
我已经搜索了文档,但所有的教程都是关于添加远程仓库或从现有提交中分离。我该如何将现有的git仓库添加到主git仓库中?
使用git subtree add --prefix=sub sub
会提示sub已经存在。
根据您的期望,有两种方法可以实现。
对于第一点,您需要使用git子模块。具体来说,在已经初始化了git init的sup目录中,您需要运行:
git submodule add location-of-sub
https://git-scm.com/book/en/v2/Git-Tools-Submodules
# add remote
git remote add sub <locationofsubrepo>
# fetch commits
git fetch
# create local branch with sub
git checkout -b sub_branch sub/master
# switch to master
git checkout master
# now, merge commit as a subdirectory
git read-tree --prefix=sub/ -u sub_branch
Cloning into '/tmp/repo1/sub'... fatal: transport 'file' not allowed fatal: clone of '/tmp/repo2' into submodule path '/tmp/repo1/sub' failed
。为了避免这种情况,需要使用-c
选项来覆盖protocol.file.allow
配置属性,例如:git -c protocol.file.allow=always submodule add --name subrepo /tmp/repo2 path-under-parent-repo
。 - zpangwin