在git中重叠分支

时间:2013-12-27 19:33:27

标签: git branch git-submodules

我有一个git存储库,它有一个数字分支(例如branch1,branch2)。其中一个分支包含一个子模块(例如子模块1)。

branch1的直接结构示例:

$ ls
subdir1/
subdir2/
file1.txt
file2.txt

branch2(包含子模块)的直接结构示例:

$ ls
submodule1/
file1.txt

当我从branch2切换到branch1($ git checkout branch1)时,来自branch2的子模块出现在branch1中:

$ ls
subdir1/
subdir2/
submodule1/
file1.txt
file2.txt

这是怎么回事?为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

子模块存在于项目级别,它们不是(必然)文件。子模块本身在git项目的根目录.gitmodules中的文件中定义。此文件概述了存储库的本地路径和远程URL。

因此,从概念上讲,子模块不存在于“分支”中,它们只是存储库本身的一部分。你也没有在任何时候“检入”子模块文件本身,所以git实际上并没有以任何方式管理它们。它实际上是“忽略”它们到一定程度,当你切换分支时,它只是“绕过”这些文件,就像新文件是未提交的而且还没有版本控制。