2009-07-20 30 views
4

この質問はthis threadに基づいています。`git submodule foreach git pull`できません。

マイ.gitmodulesは私のホームで私のホームでの私のフォルダ - 構造

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

です:私は

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

を実行

~ 
|-- [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 foreach git pull 

私は、バグを修正する

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

私の最初の仮定がpath = /Users/Masi/binpath = binを変更した取得します。しかし、これは問題を解決しません。

Gitのサブモジュールである外部リポジトリからコンテンツをアップロードするにはどうすればよいですか?

+0

binサブモジュールの.git/configはどのように見えますか? –

+0

@Charles:私の.git/configはhttp://stackoverflow.com/questions/1155095/unable-to-git-submodule-foreach-git-pull/1155850#1155850 –

+0

です。あなたのbinサブモジュールは再帰的ですね。 ? –

答えて

5

これは、通常、リモート設定が行われていない場合のエラーです。
this threadから)

ところ私のリモートリポジトリを指定する.git/configファイルを使用していない長い時間前に初期化され、リポジトリに「gitのプル」を実行しているとき、それはに導入されたパッチは、少なくとも回帰を修正しましたあります。

より良いメッセージは、おそらくのようになります。

んが、デフォルトのリモートは、あなたの現在のブランチ用に設定されていません
と、デフォルトのリモート「原点」のいずれかに設定されていませんされています。

私は、以前アクセシブルなので、ユーザーフレンドリーになっていないメッセージは、 がアクセス不能になったと考えています。


したがって、このメッセージはgit submodule

から.git /モジュールで述べた遠隔レポが.git/configに

で宣言されていないことを示しサブモジュールは、リモコンと混同しないようにされ、その主に同じプロジェクトの支店を対象としています。
サブモジュールは、ソースツリーに含める異なるプロジェクトを対象としていますが、2つのプロジェクトの履歴は完全に独立したままであり、メインプロジェクト内からサブモジュールの内容を変更することはできません。私はあなたがgit submodule initのステップを逃したかもしれないと信じて

サブモジュールのinit

は、サブモジュールを初期化しすなわち.git/configのに.gitmodulesで検出された各サブモジュール名とURLを登録します。
.git/configで使用されるキーはsubmodule.$name.urlです。
このコマンドは.git/configの既存の情報を変更しません。
次に、ローカルセットアップのサブモジュールクローンURLを.git/configにカスタマイズし、git submodule updateに進むことができます。サブモジュールの場所をカスタマイズする予定がない場合は、明示的なinitステップなしでgit submodule update --initを使用することもできます。

リモートのRepo(.git/modulesで宣言されています)が.git/configで適切に参照されている場合は、このエラーメッセージはもう表示されません。

は(pullin)サブモジュールを使用する前に、手順:

git submodule init 
git submodule update 

が必要残ります。

+0

私はそれらのステップを実行する - 私は明確にする私の質問。 –

+0

つまり、同じ問題がコマンドでも発生します。 –

+0

良い点。私は同様の問題に遭遇しました。私のサブモジュールの1つで、リモートのRepoを元のものから上流のものに誤って名前を変更したことが判明しました。 Gitブランチのトラッキング情報を設定したい場合は、 "git branch -set-upstream master origin/"で行うことができます。 –

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 
+1

.git/configと.gitmodulesの間のサブモジュールの不一致のために同じエラーが発生しました。 –

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* $ 

を実行します。

+0

あなたのbinリポジトリの.git/configから '[submodule" bin "]'セクションを削除しました:良い。しかし、メインの "Masi"リポジトリに '[submodule" bin "]'セクションがありますか?(binサブモジュールをロードしなければならないもの)。それは 'git submodule init'がやろうとしていることです... – VonC

+0

私は' bin 'リポジトリの.git/configから 'submodule" bin "セクションを削除しませんでした。私はbinサブモジュールをロードしなければならない "Masi"レポに '[submodule" bin "]'セクションを持っています。 ---フォルダ名 'bin'が私のサブモジュール' bin'の名前と同じであれば、問題は解決しません。 –

関連する問題