2012-04-06 16 views
8

私はGitにかなり新しく、この問題に関するいくつかのドキュメントを無駄に見つけようと努力しています。ここでgit submodule add fatal: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 

私は何の問題もないし、それがルートディレクトリにフォルダを作成します。

洞察力があれば幸いです。

+0

あなたは 'externalsource'ディレクトリを作成してからcd'ingしてサブモジュールを追加しようとしましたか? –

+0

私はそうしました。サブモジュールを追加するときには、ルートディレクトリからエラーを返す必要がありました。 –

+0

元のコマンドの 'JOliverEventStore'の最後にスラッシュがあります。おそらくgitはあなたがディレクトリ 'JOliverEventStore'(存在しない)の下の' JOliverEventStore'にチェックアウトしたいと思うにはあまりにも愚かですか? –

答えて

11

それはあなたが使用しているのGitのバージョンに依存することができます:このrecent thread (February 2012)バグを言及:

作業ツリーながら名前<name>と最近サブモジュールは、親プロジェクトの.git/modules/<name>ディレクトリにそのGitのディレクトリを持っているので、そこを指しているgitfileが含まれています。

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

しかし、より一般的に、git submodule<path>引数使用:

<path>が親プロジェクトに存在するクローニングされたサブモジュールの相対位置です。

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

eoinoc質問 "git status returns fatal: Not a git repository but .git exists and HEAD has proper permissions" に詳述されているin the comments別の原因を、言及しています。

私のレポの場所が変更されたため、gitの設定ファイルを更新する必要がありました。

+0

ありがとうございました。私もその記事を見ました。更新は順調に進んでいます。私はそれが最後のリリースで解決されたかどうかは分かりませんでした。このような一般的な作業のように思えます。 –

+0

git 1.6.x(Mountain Lionに含まれています)から1.8.1へのアップグレードが問題を修正しました。 –

+1

同じエラーメッセージが表示される原因はバグではありませんでした。私のリポジトリの場所が変わったので、gitの設定ファイルを更新する必要がありました:http://stackoverflow.com/questions/10144149/git-status-returns-fatal-not-a-git-repository-but-git-exists-and -head-has-prop – eoinoc

関連する問題