4

プロジェクトでサブモジュールを作成する際に問題が発生しています。サブモジュールをリポジトリ ルートに直接作成すると、すべて正常に動作します。サブモジュールがより深い場合、リポジトリは複製されません。

たとえば、これは期待どおりに機能します。

git submodule add git://someproject.com/.git someproject

ただし、次のコマンドを実行すると、プロジェクトが追加され.gitmodules空のリポジトリが作成されますが、コードはプルダウンされません ( git submodule update --init. このコマンドは出力を生成しません。

git submodule add git://someproject.com/.git lib/someproject
4

5 に答える 5

3

実行してみてください

git submodule init
git submodule update

サブモジュールを追加した後。

アップデート1

これを試して:

cd lib/someproject
git status

あなたは次のようなものを見るはずです# Not currently on any branch.

そうでない場合は、gitリポジトリが存在せず、gitのバグに遭遇した可能性があります。上記のメッセージが表示された場合は、次のようにしてください。

git checkout master
git pull
于 2012-12-19T01:26:14.657 に答える
2

サブモジュールを追加しようとした以前の試みで、リポジトリが不良な状態になっているようです。次の手順を実行した後、サブモジュールのクローンを正しく作成できました。

  1. サブモジュールを削除します。rm -rf lib/someproject
  2. .gitmodulesファイルからサブモジュールを削除します
  3. .git/configファイルからサブモジュールを削除します
  4. 削除する.git/modules/someproject

その後、git add submoduleコマンドを再度実行すると機能しました。私を正しい方向に導いてくれたすべての回答者に感謝します!

于 2012-12-20T01:35:14.650 に答える
2

次のコマンドを実行する必要があります

git submodule update --init lib/someproject

何らかの理由で、git は、作業コピー全体ではなく、サブモジュールの実行および更新時にルート ディレクトリのみを検索します。

また、.gitmodulesファイルに次のようなエントリが含まれていることを確認してください。

[submodule "someproject"]
    path = lib/someproject
    url = git://someproject.com/.git

そして、あなたの.git/configファイルには以下が含まれています:

[submodule "someproject"]
    url = git://someproject.com/.git

ドキュメント:

http://git-scm.com/book/en/Git-Tools-Submodules

于 2012-12-19T05:01:34.497 に答える
0

オライリーの本のサブモジュールのセクションを読み終えたところです。著者は、サブモジュールを追加するときに言及しています (彼の例では、プロジェクトのルートにある複製されたレポに git add を手動で使用します)。末尾のスラッシュを含めると、フォルダーをインデックスに追加するのではなく、gitlink を作成します。ばかげているように聞こえますが、追加する前にディレクトリを lib に変更して、サブモジュールへのパスのスラッシュが原因でこれが発生しないようにしてください。

これは、configs への書き込み時に、パスとリモート URL のみを受信し、パスからサブモジュール名を推測する「サブモジュールの追加」の特性である可能性もあります。おそらく手動で gitmodules と config エントリを編集して、サブモジュールが「lib/」なしで名前が付けられていることを確認しますが、パスにはそれが含まれています。

于 2012-12-19T06:53:41.607 に答える