当代码没有整齐地隔离到子目录时,Git子模块可以工作吗?

时间:2012-09-04 16:50:35

标签: git git-submodules

我正在使用一个框架,这个框架或多或少地迫使我将我自己的代码与框架代码混合在一起 - 也就是说,它们都不能整齐地隔离到它自己的子目录中。到目前为止,我通过使用.gitignore忽略所有框架代码将它们分开,但是当我需要升级框架时,我创建了一个升级分支,并进行了升级,而不是最初意识到这将意味着以前未跟踪/忽略的文件将是跟踪在新分支中,因此当我切换回主分支时将不再存在。

massive facepalm moment恢复后,我想我必须切换到使用Git子模块。然而,这带来的问题是出现属于子模块的代码必须保存在子目录中。来自Pro Git

  

子模块允许您将Git存储库保存为另一个Git存储库的子目录。

这真的是git子模块的限制,还是有任何解决方法?

1 个答案:

答案 0 :(得分:1)

我是这么认为的(子模块本身就是一个完整的git存储库,同一个文件夹不能包含两个git存储库)。我还相信,当文件夹Foo中有子模块时,外部存储库将忽略Foo中的所有内容,除了它将跟踪子模块所在的修订版。

(警告:巨大的黑客攻击)然而,你可以有两个独立的git存储库,一个在另一个内部,并且“只是”对各自的.gitignore非常小心 - 但是,你将无法使一个存储库控制另一个存储库所在的版本。此外,最外层的存储库必须是项目所在位置之外的一个文件夹级别(如果它需要包含该文件夹中的顶级文件,并且您已经拥有主存储库),那么如果您的项目位于{{除了/foo/bar/Project中的主存储库之外,您需要在/foo/bar中拥有框架存储库。