私は.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'
何がこれを引き起こす可能性がありますか?
(サブモジュールコマンドを使用せずに)テストディレクトリに同じリポジトリを複製すると、正常に機能し、期待されるファイルが作成されます。
このエラーを修正するには、.git/modules/
ディレクトリ内のサブモジュールへの同じパスを持つフォルダーを削除する必要があります。このエラーは、サブモジュールが追加されたときに初めてサブモジュールのURLが正しくなかった場合に発生する可能性があります。
サブモジュールを追加する必要がありますinsideそのレポは、サブモジュールリンクを追加およびコミットする状態にある必要がありますandサブモジュールリポジトリ自体には、チェックアウトするためのコミットが必要です。
ここで、他の場所で通常のクローンを作成できる場合は、サブモジュールリポジトリ自体に問題はありません。ただし、submodule add
は、レポジトリが空で、クローンはそうでない場合は文句を言うようです。 この男 は、同じsubmodule add
コマンドを再度実行するだけで修正できることを示唆しています。
内部レポジトリがnot空の場合、containサブモジュール。 git submodule add
を実行したのと同じディレクトリに移動し、git status
、およびgit branch
を実行して、含まれているリポジトリに少なくとも1つのブランチが作成され、奇妙な状態ではないことを確認します。
このエラーは、master
ブランチを持たないサブモジュールを追加している場合に発生する可能性があります。サブモジュール(develop
など)を追加するときに別のブランチを使用する場合は、次のコマンドを使用できます。
git submodule add -b <branch> <repository>
@ drew-noakesが示唆しているように、これは。gitignoreファイルにリストされているディレクトリ名を使用してサブモジュールを追加しようとしたことが原因である可能性があります。