? git ? ? submodule ? ? 版本控制 ? ? git submodule ?    发布于 2018-04-10   418人围观   0条评论

目的

当工作的主项目要用到其他仓库的项目时,就是git 子模块(git submodule)的用武之地了。因为重新下载其他仓库源码并复制到主项目中去,比较麻烦,而且这种工作流显得很怪异。此时使用git submodule是更好的选择。

主项目中添加子模块(子项目)

切换到所要添加子模块的目录中去,输入命令git submodule add git@github.com:2997215859/gr-roi.git,即会添加该子模块。

  1. ruiy@ruiy-All-Series:~/store/ROI/GModule$ git submodule add git@github.com:2997215859/gr-roi.git
  2. 正克隆到 'GModule/gr-roi'...
  3. remote: Counting objects: 5, done.
  4. remote: Compressing objects: 100% (5/5), done.
  5. 接收对象中: 100% (5/5), 4.73 KiB | 0 bytes/s, 完成.
  6. remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
  7. 检查连接... 完成。
  8. ruiy@ruiy-All-Series:~/store/ROI/GModule$ git status
  9. 要提交的变更:
  10. (使用 "git reset HEAD <文件>..." 以取消暂存)
  11. 新文件: ../.gitmodules
  12. 新文件: gr-roi

此时主项目根目录下也出现了新文件.gitmodule。里面保存着本地子模块的路径以及子模块的上游源

  1. ruiy@ruiy-All-Series:~/store/ROI$ cat .gitmodules
  2. [submodule "GModule/gr-roi"]
  3. path = GModule/gr-roi
  4. url = git@github.com:2997215859/gr-roi.git

切到子模块的上级目录,执行git diff --cached gr-roi可以看到在子模块目录之外,主项目git并

查看更多