submodule add和init有什么区别?

时间:2015-10-22 23:24:44

标签: git

真的,submodule addsubmodule init之间有什么区别?或者更确切地说,什么时候你想要使用一个没有另一个?

2 个答案:

答案 0 :(得分:3)

当您想要为项目添加新的子模块时,可以使用git submodule add

当您克隆具有子模块的项目时,或者其他人已将子模块添加到项目时,您使用git submodule init

答案 1 :(得分:2)

添加是指您想要将另一个git存储库导入当前的git存储库(称为“超级项目”)。要执行该操作,它会在.gitmodules中记录存储库的路径,从而将其添加到索引中。

子模块init将创建索引中记录的已存在的子模块。这是通过在git中配置索引中找到的路径来实现的。

添加:

  

将给定的存储库添加为给定路径下的子模块,该路径指向要在当前项目旁边提交的变更集:当前   项目被称为“超级项目”。

初​​始化:

  

初始化索引中记录的子模块(已添加    将子模块名称和网址从.gitmodules复制到.git/config,然后在其他地方提交。

因此,init会检出已经记录在索引中的子模块,这些子模块以前添加了

git submodule add my_sub_project directory_in_superproject

通常在克隆超级项目时,您会这样做:

git clone superproj
然后在项目中

git submodule update --init