本文共 775 字,大约阅读时间需要 2 分钟。
没有工作区的git仓库,例如远程服务器存放项目代码的仓库,并不需要工作区来修改
一个git项目需要引入另外一个git项目的时候,可以使用submodule命令来完成。
git submodule add git@github.com:huiGod/git_child.git mymodule
在当前git项目中将指定的远程仓库作为自己的子模块项目关联起来,最后的mymodule这个文件夹需要之前不存在,成功执行之后会生成额外的文件:
.gitmodules文件为:
mymodule下面为submodule所关联的完整远程仓库的内容文件。
由此可见,当前git_parent项目就关联了一个远程仓库在当前仓库(可以关联很多个),通过cd可以切换子模块的项目,cd mymodule之后进入到了git_child模块项目中。
当关联的子模块项目有新的提交之后,可以cd切换到相应模块目录执行 git pull来拉取当前模块最新的代码,但是如果有很多个子模块相关联,显然这种一个个的切换pull是不切实际的。另一种一次性拉取所有子模块最新代码的命令是在最外层的项目目录执行:
git submodule foreach git pull
如果子模块有最新的提交,那么继续执行后续的git add commit push即可拉取所有子模块的最新提交。
对于有submodule的git项目,对应的clone需要有一定的改变,因为同时需要clone对应的子模块:
第一种方法:
git submodule initgit submodule update --recursive
第二种方法:
git clone git@github.com:huiGod/git_parent.git --recursive