10

私はGitにかなり慣れていないので、この問題に関するドキュメントを見つけようと最善を尽くしていますが、役に立ちません。

これが私のコマンドです:

$ git submodule add https://github.com/joliver/EventStore.git externalsource/JOliverEventStore/ 

致命的: git リポジトリではありません: ../.git/modules/externalsource/JOliverEventStore サブモジュール 'externalsource/JOliverEventStore' をチェックアウトできません

私は自分のレポのルートにいて、現在/externalsource/JO liverEventStore/. エラーは、私が知らないディレクトリに関するものです。

次のようにサブモジュールをルートディレクトリに追加すると:

$ git submodule add https://github.com/joliver/EventStore.git JOliverEventStore 

問題はなく、ルートディレクトリにフォルダーが作成されます。

どんな洞察も大歓迎です。

4

3 に答える 3

12

使用している Git のバージョンによって異なります。この最近のスレッド (2012 年 2 月)では、バグについて言及されています。

最近、名前付きのサブモジュール<name>の git ディレクトリがスーパープロジェクトの.git/modules/<name>ディレクトリにあり、作業ツリーにはgitfileそこへのポイントが含まれています。

同じサブモジュールが、これまでに存在しなかった (.gitmodules ファイルに見つからない) ブランチに追加されると、パスから名前が初期化されません。これにより、ディレクトリが見つかったときに
間違ったパスが入力されます。これは、現在空の名前を喜んで使用するためです。 その後、ディレクトリ階層のより深いパスがある場合でも、常に 1 つのディレクトリのみを指します。gitfile.git/modules/<name>

しかし、より一般的には、次の<path>引数を使用しますgit submodule

<path>複製されたサブモジュールがスーパープロジェクトに存在するための相対的な場所です。

  • <path>が存在しない 場合は、指定された URL から複製することによってサブモジュールが作成されます。
  • <path>が存在し、すでに有効な git リポジトリである場合、クローンを作成せずに変更セットに追加されます。
    この 2 番目のフォームは、新しいサブモジュールを最初から簡単に作成できるようにするために提供されており、ユーザーが後でサブモジュールを指定された URL にプッシュすることを前提としています。

eoinocは、コメントで別の原因について言及しています。これについては、質問「git status返品fatal: Not a git repository but .git exists and HEAD has proper permissions」で詳しく説明しています。

リポジトリの場所が変更されたため、git の構成ファイルを更新する必要がありました。

于 2012-04-07T09:36:42.247 に答える
6

これはばかげているように思えるかもしれませんが、そのばかげた間違いで 30 分を無駄にしただけなので....

親リポジトリは、git リポジトリとして既に作成されている必要があります。親を作成したばかりで、サブモジュールを作成しgit submodule add、親に入れようとしました。ただし、親は git リポジトリとして初期化されていませんでした。

これにより、あなたが言及したものと同じエラーが発生しました(「gitリポジトリではありません」)。しかし、それはgitリポジトリではなかった親でした....ばかげています。

于 2020-07-23T14:57:43.343 に答える