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

git: set submodule to auto-track remote repository

是否可以创建一个始终反映远程分支 HEAD 的 git 子模块?即我不想手动更新对提交的引用。当我克隆我的父 repo 时,我想获取子模块正在跟踪的分支的 HEAD。如果子模块有变化,但父仓库没有变化,我想要一个 git pull 来更新子模块。

这可能吗?

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

如果您必须定期执行此操作,可以将其包装在脚本中:

#!/bin/sh

submodule=

(cd $submodule && git checkout master && git pull)
git add -u $submodule
git commit -m "updated submodule $submodule"

将其命名为 "git-update-submodule" 并将其放在您的 $PATH 中,然后要更新目录 foo 中的子模块,您可以 运行:

git update-submodule foo