gitサブモジュールを追加すると、「あなたはまだ生まれていないブランチにいます」


116

私は自分の.vim/bundlesディレクトリにいくつかのサブモジュールを追加しようとしています。この特定のリポジトリを追加しようとすると、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'

何がこれを引き起こすことができるか考えていますか?

同じサブリポジトリを(submoduleコマンドではなく)テストディレクトリに複製すると、正常に機能し、予期したファイルが作成されます。

回答:


210

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


2
ありがとう、それでうまくいった。私は.vim/bundle/vim-scala削除するパスにクローンを作成していたので、最初は少し自明ではありませんでした.git/modules/.vim/bundle/vim-scala
matt b

2
Windowsを使用している場合は、.git / modulesの下のディレクトリが表示されない場合があることに注意してくださいdir /AH
paxos1977

13
その.git/modules/path/to/submoduleディレクトリを削除してサブモジュールを再度追加しようとすると、のエラーが表示されます:次のパスは.gitignoreファイルの1つによって無視されています:path / to / submodule
Drew Noakes 2012

1
@Drew Noakesはgitサブモジュールの最初の実行後に作成された.vim / bundle / vim-scalaを削除しますadd
PiotrKrólFeb

Windowsでは、Windowsエクスプローラーオプション(ファイル拡張子を表示するのと同じ場所)を使用して、GUIで非表示のフォルダーを表示し、それらを削除することもできます。
user83358

13

既存のリポジトリ内にサブモジュールを追加する必要があります。そのリポジトリは、サブモジュールリンクを追加してコミットする状態である必要があり、サブモジュールリポジトリ自体は、チェックアウトするためのコミットが必要です。

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

内部リポジトリが空でない場合、サブモジュールを含めるリポジトリを確認します。あなたが走った同じディレクトリに移動しgit submodule add、実行git status、およびgit branchあなた含むレポを作成した少なくとも一つの枝を持ち、奇妙な状態でないことを確認します。


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

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

7
+1 Argh!This guy suggests this is fixable by just running the same submodule add command again.。私は賢明な答えを見つけようとするこの問題と闘っていましたが、これでようやく修正されました。これは、BitBucketからサブモジュールを作成するときにMSYSでgit 1.8.0を使用するため、同じ状況の場合は、最初にこれを試してください。
アーロンニュートン

2回追加することもうまくいきました。しかし、私にはその理由がわかりません。説明はありますか?
エリーゼ

ここでも2回追加します。理由を理解したいのですが
Vinicius Dantas

12

このエラーは、masterブランチのないサブモジュールを追加する場合に発生する可能性があります。サブモジュール(developたとえば)を追加するときに別のブランチを使用する場合は、次のコマンドを使用できます。

git submodule add -b <branch> <repository>

1
私の場合、レポは新しく作成されたため、ファイルとブランチがありませんでした(空でした)ので、git submodule add -b master <repo.git> <folder>助けになりました
vladkras

これは私の問題でした。私のサブモジュールには2つのブランチしかありませんでした。それらのどれもmaster私のために働いたソリューションではありません。
Guerneen4 2017年

0

@ drew-noakesが言及したように、これは、.gitignoreファイルにリストされているディレクトリ名を使用してサブモジュールを追加しようとしたことが原因である可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.