2012-08-09 13 views
109

.vim/bundlesディレクトリにいくつかのサブモジュールを追加しようとしていますが、この特定のレポを追加しようとするとGitは私に、前に見た:gitサブモジュールを追加するときに "まだ生まれていないブランチにいる"

$ git submodule add -f git://github.com/derekwyatt/vim-scala.git .vim/bundle/vim-scala 
fatal: You are on a branch yet to be born 
Unable to checkout submodule '.vim/bundle/vim-scala' 

何が原因なのでしょうか?

テストディレクトリ(サブモジュールコマンドではない)に同じリポジトリをクローンすると、正常に動作し、期待されるファイルが作成されます。あなたは内の既存のレポをサブモジュールを追加する必要が

答えて

194

このエラーを修正するには、.git/modules/ディレクトリ内のサブモジュールと同じパスのフォルダを削除する必要があります。このエラーは、サブモジュールが追加されたときにサブモジュールのURLが正しくない場合に発生する可能性があります。

+2

ありがとう、それはトリックでした。私が '.vim/bundle/vim-scala'にクローンを作成して以来、削除するパスは' .git/modules/'でした。vim/bundle/vim-scala' –

+2

ウィンドウ上にいる場合は、 'dir/AH'を除いて.git/modules下のディレクトリが表示されないことに注意してください。 – paxos1977

+13

' .git/modules/path/to/submodule'ディレクトリに移動し、サブモジュールを再追加しようとすると、次のパスが.gitignoreファイルの1つであるpath/to/submodule_で無視されます。 –

12

、そのレポは、サブモジュールのリンク、をコミット&を追加した状態にあることが必要とサブモジュールレポ自体は、チェックアウトするコミットしておく必要があります。

ここで、通常のクローンを他の場所に作成することができれば、サブモジュールレポ自体は問題ありません。しかし、submodule addは、クローンが空ではない間にリポジトリが空であれば文句を言うように見えます。 This guyは同じsubmodule addコマンドを再度実行するだけでこれが修正可能であることを示唆しています。

内側のレポがない空の場合、にしたいレポをチェックするには、サブモジュールが含まれています。 git submodule addと同じディレクトリに移動し、git statusgit branchを実行して、含まれているリポジトリに少なくとも1つのブランチが作成され、奇妙な状態ではないことを確認します。

+0

これらのことをすべて確認しました。希望のレポを別のディレクトリにチェックアウトすると、多くのファイルと 'master'ブランチがあります。このサブモジュールをサブモジュールとして追加しようとしているレポは、 'master'ブランチにあり、明らかな問題はありません(ステータスはいくつかの変更されたファイルを返しますが、それだけです)。そして、私は他のサブモジュールを追加できますこのリポジトリに。 –

+0

また、奇数:私のOPからの 'fatal'警告の後、gitは' .vim/bundle/vim-scala'に空のディレクトリを残します。また、.gitmodulesに手を加えなくても、このgithub.comリポジトリを '.git/config'に参照する行がいくつか追加されていますが、それらを削除した後も同じ' fatal'エラーメッセージが表示されます。 –

+6

+1 'この男は、同じサブモジュールaddコマンドをもう一度実行するだけで、これを解決できることを示唆しています。私は賢明な答えを見つけることを試みるこの問題と戦ってきました、そして、これは最終的にそれを修正しました。これはBitBucketからサブモジュールを作成している間にMSYSでgit 1.8.0を実行していたので、同じ状況になっている場合はまずこれを試してみてください。 –

10

このエラーは、masterブランチのないサブモジュールを追加する場合に発生します。あなたがサブモジュール(例えばdevelop)を追加するときに別のブランチを使用したい場合は、以下のコマンドを使用することができます:@で示唆したように

git submodule add -b <branch> <repository> 
+1

私の場合、リポジトリが新しく作成されたため、ファイルやブランチがなくなっていたので(空だったので)、 'git submodule add -b master ' helped – vladkras

+0

これは私のサブモジュールに2つしかないあなたの解決策は私のために働いた 'マスター '。 – Guerneen4

0

を-noakesを描いた、これはサブモジュールを追加しようが原因で発生することができ.gitignoreファイルに記載されているディレクトリ名を使用してください。

関連する問題