git submodule foreach不工作

时间:2012-01-08 14:27:27

标签: git git-submodules

我想弄清楚为什么git submodule foreach命令对我不起作用。我克隆了一个有几个子模块的git存储库。我想一次初始化并更新所有子模块以下拉子模块源。但无论我尝试git submodule foreach都不适合我...我尝试了几件事:

git submodule foreach init
git submodule foreach update
git submodule foreach update --init
git submodule foreach --recursive git submodule update --init

每个命令都会执行但没有任何输出......如果我单独启动/更新每个模块(不使用foreach)那么没问题。

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

git submodule initgit submodule update应该适用于.gitmodules中注册的所有子模块,因此对每个子模块执行它们没有意义。

如果子模块中有子模块,git submodule update --recursive会递归处理所有子模块。

答案 1 :(得分:3)

克隆之后你通常需要做的就是:

git submodule update --init --recursive

在最初完成此操作后,您将删除--init选项。

init选项是命令的一部分,它将.gitmodules文件中指定的url复制到子模块repo配置中。如果您使用的是特定的遥控器并且项目已移至您不想使用的遥控器,则可能不希望这样做。一个典型的例子就是你宁愿在GitHub上使用你的项目分支,而顶层的回购指向主要的回购。

答案 2 :(得分:2)

你必须跑:

git submodule init
git submodule update

-

你的树的根部需要一个.gitmodules文件,它看起来像这样。

[submodule "LiveReload/Compilers"]
        path = LiveReload/Compilers
        url = git://github.com/livereload/livereload-plugins.git
[submodule "Shared/libs/fsmonitor"]
        path = Shared/libs/fsmonitor
        url = git://github.com/andreyvit/fsmonitor.c.git
[submodule "js"]
        path = js
        url = git://github.com/livereload/livereload-js.git

以下是基于以上内容的输出结果:

Nicks-MacBook:LiveReload2 admin$ git submodule init
Submodule 'LiveReload/Compilers' (git://github.com/livereload/livereload-plugins.git) registered for path 'LiveReload/Compilers'
Submodule 'Shared/libs/fsmonitor' (git://github.com/andreyvit/fsmonitor.c.git) registered for path 'Shared/libs/fsmonitor'
Submodule 'js' (git://github.com/livereload/livereload-js.git) registered for path 'js'
Nicks-MacBook:LiveReload2 admin$ git submodule update
Cloning into 'LiveReload/Compilers'...
remote: Counting objects: 7571, done.
remote: Compressing objects: 100% (5446/5446), done.
remote: Total 7571 (delta 2326), reused 6733 (delta 1488)
Receiving objects: 100% (7571/7571), 7.80 MiB | 2.73 MiB/s, done.
Resolving deltas: 100% (2326/2326), done.
Submodule path 'LiveReload/Compilers': checked out 'd770710edc2362caf4ed9adf303da1edc9e6e494'
Cloning into 'Shared/libs/fsmonitor'...
remote: Counting objects: 132, done.
remote: Compressing objects: 100% (79/79), done.
remote: Total 132 (delta 73), reused 112 (delta 53)
Receiving objects: 100% (132/132), 23.29 KiB, done.
Resolving deltas: 100% (73/73), done.
Submodule path 'Shared/libs/fsmonitor': checked out '1290027aea3a8e3f7fe06e3c228a16240c0fc17f'
Cloning into 'js'...
remote: Counting objects: 745, done.
remote: Compressing objects: 100% (413/413), done.
remote: Total 745 (delta 301), reused 703 (delta 259)
Receiving objects: 100% (745/745), 864.22 KiB | 820 KiB/s, done.
Resolving deltas: 100% (301/301), done.
Submodule path 'js': checked out '6aa86b01479c3aad785e9623f39cfcde2b8615f
相关问题