git submodule的使用(整理为一个命令管理几个git仓库的更新)

1.submodule的基本使用方法

1.假如完整的工程目录如下:

说明:目录很简单,就是一个主工程MainProj,包含了别人写的一个子模块SubModule

2. 然后在另一台电脑上开始clone工程

mkdir mj
cd mj
git init

git submodule add https://gitee.com/jianan/MainProj.git

这行执行完后,本以为,所有的目录应该下来了,此时查看下目录结构:

SubModule这个子模块内容竟然没有被拉取下来?这是为什么呢? 这就涉及到子模块的更新问题,执行这个git submodule update --init,子模块才会跟着更新。

2.删除submodule的正确姿势

删除submodule

git rm SubModule 

对,只需要这一句话

此时查看下工作目录:

嗯...SubModule已经被我们干掉了,很干净...

后记:之前查资料说的SubModule的删除很麻烦,现在git版本,其实就这一句话,很简单。所以看到的都是假的,只有自己亲自实践了,那才是真的,越来越喜欢git了

3.最佳实践来了

拉取别人的工程:

mkdir mj
cd mj
git init
git submodule add http://XXX/project.git
git submodule add http://YYY.git
git submodule add http://ZZZ.git
git submodule foreach --recursive git submodule update --init --recursive


 配置如下快捷键:

alias gsfl="sudo git submodule foreach git pull"  
alias gsfp="sudo git submodule foreach --recursive git push"  
alias gsfs="sudo git submodule foreach --recursive git status"  
alias gsfr="sudo git submodule foreach --recursive"  
alias gsfb="sudo git submodule foreach --recursive git branch" 

以后操作的话,

1.每次打开电脑第一步,执行gsfl进行拉取,然后子模块之类的,都会更新了

2.切换分支的话,就gsfr git checkout master,这样所有的分支都会切换,从而避免子模块在游离commit上

华丽分割线(一点对git的思考)

经过一些拉取之后,所有目录内容都下来了。如果此时在SubModule下面增加个文件1.txt,那么此时:

cd MainProj

gst

提示在SubModule下面有untracked content的内容,

git add

gst

我擦,发现咋什么都没add进来,这是为什么呢?懵逼了

解惑:

这是因为:

对于git来说,SubModule这个文件的hash值并没有变化,所以,是不能被add的,只是SubModule里面有未被追踪的文件而已,所以,要想查看这个修改,必须:

方法1: :

cd SubModue

gst

方法2(熟读最佳实践圣经后...):

gsfs

然后,就是最熟悉的操作了:

git add   

git commit

git push

所以,上面的最佳实践,就是一年的总结.

-----20180309-----

再次理解submodule

1.需要明白,子模块和父模块的关系的保持全部在于hash值

2.new commits产生的原因是:当clone下来工程后,假如某个子模块所在的分支是branch1, 前服务器上记录了一个hash值 hash1; 这个时候,你切换到master上,此时,又是一个hash值,如果此时这个hash值和之前那个hash1不相同,就会提示new commits.   你不管是:git status查看状态,发现是clean干净的。还是用stash恢复,都没用也恢复不了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值