git:设置子模块以自动跟踪远程存储库

时间:2017-09-19 14:48:01

标签: git git-submodules

是否可以创建一个始终反映远程分支HEAD的git子模块?即我不想手动更新对提交的引用。当我克隆我的父repo时,我想得到子模块正在跟踪的分支的HEAD。如果子模块发生了更改,但没有更改父库,我希望git pull更新子模块。

这可能吗?

1 个答案:

答案 0 :(得分:1)

这是不可能的:父存储库存储子模块的提交ID。这确保了检出父存储库的特定修订版的每个人都获得相同版本的子模块;替代方案将是凌乱的(如果更新子模块使其不再与父存储库兼容,该怎么办?)。

如果你必须经常这样做,你可以把它包装在一个脚本中:

array(3) {
  ["idempotency_key"]=>
  string(13) "59c138b7a67e2"
  ["line_items"]=>
  array(2) {
    [0]=>
    array(3) {
      ["name"]=>
      string(12) "Ham & Cheese"
      ["base_price_money"]=>
      array(1) {
        ["amount"]=>
        float(399)
      }
      ["quantity"]=>
      string(1) "1"
    }
    [1]=>
    array(3) {
      ["name"]=>
      string(29) "Starbucks DOUBLESHOT Expresso"
      ["base_price_money"]=>
      array(1) {
        ["amount"]=>
        float(250)
      }
      ["quantity"]=>
      string(1) "1"
    }
  }
  ["taxes"]=>
  array(3) {
    ["type"]=>
    string(8) "ADDITIVE"
    ["name"]=>
    string(15) "State Sales Tax"
    ["percentage"]=>
    string(1) "7"
  }
}

将其命名为" git-update-submodule"并将其放在#!/bin/sh submodule=$1 (cd $submodule && git checkout master && git pull) git add -u $submodule git commit -m "updated submodule $submodule" 中,然后更新您可以运行的目录$PATH中的子模块:

foo