我有一个具有以下结构的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内部有更多了解的人都可以解释为什么这不可能/不起作用吗?
答案 0 :(得分:1)
子模块无法满足您的要求,您可以使用子树。
添加子模块时,主模块会跟踪子模块存储库的整个分支。所以你不仅可以通过子模块跟踪branch1。
对于子树,它可以通过以下方式将分支添加到特定路径:
git subtree add --prefix=folder1/branch1 <repo URL> branch1