2009-07-20 146 views
4

這個問題是基於this thread無法'git submodule foreach git pull'

我.gitmodules是在我的家庭

[submodule "bin"] 
      path = bin 
      url = git://github.com/masi/bin.git 

在我的家庭我的文件夾 - 結構:

~ 
|-- [drwxr-xr-x] bin   // this is the folder which I make a submodule 
           // it is also a folder where I have a Git to push my submodule's files 
    | -- fileA 
    ` -- folderA 
    ... 

我跑

git submodule init # I get no output from these commands 
git submodule update   

我跑

git submodule foreach git pull 

我得到

Entering 'bin' 
fatal: Where do you want to fetch from today? 
Stopping at 'bin'; script returned non-zero status. 

我的第一個假設來修正錯誤是改變path = binpath = /Users/Masi/bin。但是,這並不能解決問題。

如何從外部存儲庫(這是我的Git中的子模塊)上載內容?

+0

什麼是git的/配置看起來像你的bin子模塊? – 2009-07-20 18:37:42

+0

@Charles:我的.git /配置是在http://stackoverflow.com/questions/1155095/unable-to-git-submodule-foreach-git-pull/1155850#1155850 – 2009-07-20 20:41:39

+0

它看起來像你的bin子模塊是遞歸的? ? – 2009-07-20 21:37:12

回答

5

這通常是沒有遠程配置時發生的錯誤。
(從this thread

它是一個補丁推出運行在很久以前初始化的倉庫「混帳拉」不使用.git的/ config文件來指定我的遠程倉庫時,至少修復迴歸是。

一個更好的消息可能會是這樣的:

沒有默認的遠程配置爲您的當前分支,
和默認的遠程「出身」也不會被配置。

我覺得錯過了作爲由用戶友好由於 來是當時的交通不便更早傳遞消息。


所以這個消息指示在git的提到的遠程回購/模塊未在的.git /配置

git submodule

子模塊將不被用遙控器,混淆宣佈其主要用於同一項目的分支機構;
子模塊都是爲了你想使你的源代碼樹的一部分,不同的項目,而這兩個項目的歷史還停留完全獨立的,你不能從主項目中修改子模塊的內容。

我相信你可能已經錯過的git submodule init步驟:

子模塊初始化

初始化子模塊,即註冊每個子模塊的名稱和網址在.gitmodules發現到的.git /配置
.git/config使用的密鑰是submodule.$name.url
該命令不會改變.git/config中的現有信息。
然後,您可以自定義.git/config子模塊克隆網址,爲您的本地設置,並繼續與git子模塊更新;如果您不打算自定義任何子模塊位置,也可以在沒有顯式初始化步驟的情況下使用git submodule update --init

如果您的遠程回購(在git的/模塊的聲明)中的.git/config中充分參考的,你不應該有此錯誤信息了。

git submodule init 
git submodule update 

仍然是必要的:

使用(普林)子模塊,所述步驟之前。

1

對於bin子模塊,.git/config看起來像 ?

我的.git/config中

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
[remote "github"] 
    url = [email protected]:masi/Sam.git 
    fetch = +refs/heads/*:refs/remotes/github/* 
[submodule "bin"] 
    url = git://github.com/masi/bin.git 
0

我在的.git/config中刪除的子模塊-part。

我跑

~ master* $ git submodule init      #this adds it back to .git/config 
Submodule 'bin' (git://github.com/masi/bin.git) registered for path 'bin' 
~ master* $ git submodule update 
~ master* $ git submodule foreach git pull 
Entering 'bin' 
fatal: Where do you want to fetch from today? 
Stopping at 'bin'; script returned non-zero status. 
~ master* $ 

同樣的問題仍然存在。