git中子仓库和主仓库间彻底解耦的解决办法

各平台的帖子中都描述了主仓库和子仓库的关系:主仓库和子仓库相对独立;但其实,使用过程中,还会有藕断丝连的关系,影响着主仓的提交;

比如:在git +gerrit +jenkins这样的开发模式下,编译主仓库时无需感知子仓库的版本,默认拉取子仓的最新版本来配合主仓编译;这样的情况下,开发者无需提交主仓和子仓之间的“版本关系”,

但是子仓一旦init和update之后,在主仓中执行git statue后会显示:

      “modified: xxx”(xxx为子模块名称)

执行git diff之后显示:

     “-Subproject commit xxxxxxxxxxxxxxxxxxx

     +Subproject commit xxxxxxxxxxxxxxxxxxx”

这两行代表着主子仓链接关系/版本的变更,当开发者不需要提交此笔modified,或者根本不需要在主仓中看到这个modified时,该怎么解决呢?

通过查看gitmodules官方文档可知,有如下配置项:

 --path   --url   --update   --branch   --fetchRecursiveSubmodule  --ignore   --shallow

我们解决上述问题所用的就是容易被忽略的ignore,该项提供四个值:

 all    dirty    untracked   none  (严格程度按照由高到低)

因此,在".gitmodules"文件中手动添加上ignore选项即可,例

[submodule "xxx"]

        path = xxx/xxx

        branch = dev

        url = http://gerrit.xxx.com/xxx

        ignore = all

 如此,主仓库中将不再显示任何子仓库的改动,不过,如果强制git add,也是可以将子仓库的修改添加到工作区的。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值