Git branch作为拥有存储库

时间:2016-12-20 16:36:02

标签: git version-control git-submodules

我有一个具有以下结构的git存储库:

repo - /folder1
     - /folder2
     ...

这个回购有2个分支:

repo ┌--------- master
     |
     └--------- branch1

我想将branch1作为子模块添加到此repo中,以便我具有以下结构:

repo - /folder1 - /branch1 (submodule)
     - /folder2
     ...

我知道可以添加一个跟踪分支而不仅仅是特定提交的子模块,但是当我尝试将repo添加为自己的子模块时,我无法提交结果,我收到以下错误:

fatal: git cat-file :0:folder1/branch1: bad file
Unable to checkout folder1/branch1

运行git-fsck会返回一个悬空blob的大列表。

据我所知,我还没有找到任何人试图这样做。我还没有在文档中找到任何说明这是不可能的。

任何对git内部有更多了解的人都可以解释为什么这不可能/不起作用吗?

1 个答案:

答案 0 :(得分:1)

子模块无法满足您的要求,您可以使用子树

添加子模块时,主模块会跟踪子模块存储库的整个分支。所以你不仅可以通过子模块跟踪branch1。

对于子树,它可以通过以下方式将分支添加到特定路径:

git subtree add --prefix=folder1/branch1 <repo URL> branch1