git submodule的使用

git submodule

基本概念就是在一个相对复杂的大项目下面,想独立管理一个子项目。某个工作中的项目需要包含并使用另一个项目,两个项目虽然放在一个repo里面但其实是独立的管理。子模块有自己独立的repo
比如我想在test2mian仓库下添加test2b这个子模块

添加submodule

在主仓库中添加submodule

git submodule add http://xxx:xx/XieXiaohan/test2b.git

此时项目仓库中会多出两个文件:.gitmodules 和 test2b

注意,此时你还只是在本地添加了submodule,同步到远端需要在主仓库的目录下,add、commit和push

更新submodule

  1. 如果第三方更新了子模块的远程仓库,比如同学a push了一版新的test2b,test2main会发生什么变化呢?
  • 点进test2main的远程仓库的图形界面上,发现test2b关联的版本还是之前的版本,没有变化
  • 本地的test2b也不会发生变化
  • 此时如果需要同步更新,则进入test2b的路径,git pull即可,其实就是把test2b当作完全独立的仓库操作
  • 再在test2main的路径下add commit push,就可以在test2main的远程仓库里看到,test2b关联的是最新的版本了
  1. 如果在本地的test2main更改了test2b的代码

情况一:

  • 直接在test2main的路径下面add/commit会显示没有更新
  • 需要进入test2b的路径下add/commit
  • 回到test2main下,再次add/commit,然后push
  • 你会发现test2mian的本地和远程仓库都更新了,test2mian中的test2b也关联了新版本,但是!!test2b的远程仓库并不会更新
  • 当你再进入test2b中git push,才会发现test2b的远程仓库更新了,且test2b的版本号和main中的test2b的版本号一致

情况二:

  • 直接在test2b下push到子模块的远程仓库
  • 首先test2b的远程仓库会更改到最新版本
  • 但是test2mian的远程仓库还是没有变化
  • 要回到test2main的路径下,重新add/commit/push,才会更新
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值