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
是否可以创建一个始终反映远程分支 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