4

この質問はこのスレッドに基づいています。

私の.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 = binすることでしたpath = /Users/Masi/bin。ただし、これで問題が解決するわけではありません。

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

4

1 に答える 1

5

これは通常、リモートが構成されていない場合に発生するエラーです。
このスレッドから)

これは、リモートリポジトリの場所を指定するために.git / configファイルを使用しない、かなり前に初期化されたリポジトリで「gitpull」を実行したときのリグレッションを少なくとも修正するために導入されたパッチでした。

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

現在のブランチにはデフォルトのリモートが構成されて
おらず、デフォルトのリモート「origin」も構成されていません。

当時はアクセスできなかったため、以前のパスではメッセージが使いやすくなっていなかったと思います。


したがって、このメッセージは、.git/modulesで言及されているリモートリポジトリが.git/configで宣言されていないことを示しています

gitサブモジュールから

サブモジュールをリモートと混同しないでください。リモートは、主に同じプロジェクトのブランチを対象としています。
サブモジュールは、ソースツリーの一部にしたいさまざまなプロジェクトを対象としていますが、2つのプロジェクトの履歴は完全に独立したままであり、メインプロジェクト内からサブモジュールの内容を変更することはできません。

私はあなたがのステップを逃したかもしれないと信じていますgit submodule init

サブモジュールの初期化

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

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

(pullin)サブモジュールを使用する前に、次の手順を実行します。

git submodule init
git submodule update

必要なままです。

于 2009-07-20T18:43:31.163 に答える