我们使用 git 子模块来管理一些依赖于我们开发的许多其他库的大型项目。每个库都是作为子模块引入依赖项目的单独 repo。在开发过程中,我们经常想要抓住每个依赖子模块的最新版本。
git 有内置命令来执行此操作吗?如果没有,那么 Windows 批处理文件或类似文件怎么办呢?
对于git 1.8.2或更高--remote
,添加了选项--remote
以支持更新远程分支的最新提示:
git submodule update --recursive --remote
这有额外的好处是尊重.gitmodules
或.git/config
文件中指定的任何 “非默认” 分支(如果你碰巧有任何,默认是 origin / master,在这种情况下,这里的一些其他答案可以作为好)。
对于git 1.7.3或更高版本,你可以使用(但下面有关于更新仍然适用的问题):
git submodule update --recursive
要么:
git pull --recurse-submodules
如果你想把你的子模块拉到 repo 指向的最新提交 intead。
注意:如果这是您第一次签出--init
需要先使用--init
首先:
git submodule update --init --recursive
对于较旧的 git 1.6.1或更高版本,你可以使用类似的东西(修改为适合):
git submodule foreach git pull origin master
有关详细信息,请参阅git-submodule(1)
如果你需要将子模块的东西拉到你的子模块库中使用
git pull --recurse-submodules
一个功能 git 首先在 1.7.3 中学到了。
但是这不会检查子模块中的正确提交(主存储库指向的提交)
要检查子模块中的正确提交,您应该在使用后更新它们
git submodule update --recursive --remote
git submodule update --init --recursive
从 git repo 目录中,对我来说效果最好。
这将拉出所有最新的包括子模块。
git - the base command to perform any git command
submodule - Inspects, updates and manages submodules.
update - Update the registered submodules to match what the superproject
expects by cloning missing submodules and updating the working tree of the
submodules. The "updating" can be done in several ways depending on command
line options and the value of submodule.<name>.update configuration variable.
--init without the explicit init step if you do not intend to customize
any submodule locations.
--recursive is specified, this command will recurse into the registered
submodules, and update any nested submodules within.
git submodule update --recursive
从 git repo 目录中,对我来说效果最好。
这将拉出所有最新的包括子模块。
git - the base command to perform any git command
submodule - Inspects, updates and manages submodules.
update - Update the registered submodules to match what the superproject
expects by cloning missing submodules and updating the working tree of the
submodules. The "updating" can be done in several ways depending on command
line options and the value of submodule.<name>.update configuration variable.
any submodule locations.
--recursive is specified, this command will recurse into the registered
submodules, and update any nested submodules within.