2012-01-08 92 views
3

我想知道爲什麼git submodule foreach命令不適合我。我克隆了一個有幾個子模塊的git倉庫。我想一次初始化並更新所有子模塊以下拉子模塊源。但無論我嘗試git的子模塊的foreach不適合我的工作。我試過幾件事情:git submodule foreach不工作

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

每個命令都將執行,但沒有任何輸出......如果我去和init /單獨更新每個模塊(不使用foreach)然後沒有問題。

任何想法?

回答

5

git submodule initgit submodule update都應該爲.gitmodules註冊的所有子模塊的工作,所以它沒有意義執行它們每個子模塊。

如果子模塊中有子模塊,則git submodule update --recursive將遞歸處理全部子模塊。

+0

確定這肯定工作...所以當它是適合使用的foreach COMAND? – 2012-01-09 08:52:22

+0

@PrimozRome:對於你想在每個子模塊上使用的任何命令,就像在這個外部腳本示例中一樣:http://stackoverflow.com/questions/5889246/git-submodule-foreach-execute-read – VonC 2012-01-09 09:23:31

3

克隆畢竟,你通常需要做的是:

git submodule update --init --recursive 

在此之後最初做,你放下--init選項。

init選項是命令的一部分,它將.gitmodules文件中指定的URL複製到子模塊回購配置中。如果您正在使用某個特定的遠程選項,並且該項目已移至您不想使用的遠程位置,則您可能不希望這樣做。這是一個典型的例子,當你更願意在GitHub上使用你的項目分支,並且最高級別的回購指向主要的迴歸。

2

你必須運行:

git submodule init 
git submodule update 

-

您需要在根.gitmodules文件F0的樹,它看起來像這樣。

[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