0

これは以前に尋ねられた可能性がありますが、サブモジュールが多くの問題を引き起こしているように見えるため、見分けるのは困難です。これが私がしていることです。

# cd to parent repo
git submodule add git://example.com/myrepo
cd myrepo
# make some changes
git commit -am "made changes"
cd ..
git commit -am "modified submodule"
git clone --recursive . <path to cloned repo>

これを行うとエラーが発生します

致命的:参照はツリーではありません:96fa64c0dd64684f86d17841f7c515446885eb33

に続く

サブモジュールパス「myrepo」の「96fa64c0dd64684f86d17841f7c515446885eb33」をチェックアウトできません

私はここで何が間違っているのですか?サブモジュールを追加し、それにいくつかの変更を加えてから、親ソースツリー全体(サブモジュールを含む)を新しいリポジトリに複製したいと思います。

4

1 に答える 1

0

あなたは電話する必要があります

git submodule init

サブモジュールを追加した後。 git submodule addリポジトリのクローンを作成し、.gitmodulesにエントリを追加します。 git submodule initサブモジュールを初期化し、.gitmodulesのエントリを.git/configにコピーします

編集

サブモジュールを使用する際の重要なステップを見逃したのではないかと思います。サブモジュールを処理するために使用する手順は次のとおりです。

該当する場合は、最初に親リポジトリのクローンを作成します

git clone git@github.com:test/test.git

複製されたディレクトリに移動し、サブモジュールを追加します

#change to the parent repo directory
cd test

#add the submodule to test/submodules/mysubmodule
git add submodule git@github.com/test/mysubmodule.git submodules/mysubmodule

すべてのサブモジュールを初期化し、ネストされたものを含むすべてのサブモジュールを更新します

git submodule update --init --recursive

すべての変更を追加し、必要に応じてコミットしてリモートにプッシュします

git add .
git commit

変更をコミットするまでリポジトリはサブモジュールについて実際には知らないため、この最後の部分は非常に重要です。

于 2012-04-18T23:16:17.813 に答える