パスmysubmodule
にサブモジュールが含まれていたプロジェクトがあります。ソース(1.8.3-rc2)から最新のGitをインストールし、git submodule deinit mysubmodule
を実行しました。その後、.gitmodules
ファイルを削除し、変更をコミットしました。 mysubmodule
フォルダーから.git
ディレクトリーも削除しました。
ファイルをmysubmodule
からリポジトリに直接コミットしたいのですが、gitは変更はないと言います。 git add mysubmodule
と入力しても何もしません。 git add mysubmodule/file.txt
と入力すると、fatal: Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'
と表示されます
また、レポの最新バージョンをチェックアウトすると、.gitmodules
ファイルがないにもかかわらず、mysubmodule
ディレクトリが作成されることも発見しました。 git submodule init
を実行すると、No submodule mapping found in .gitmodules for path 'mysubmodule'
エラーが発生します。
どうすれば修正できますか?
Gitはmysubmodule
がサブモジュールであると考えています。これは、特別なモード「160000」でインデックスに記録されるためです。
詳細については、「 gitサブモジュールの更新は最初にのみ必要ですか? 」を参照してください。
これを確認するには、 この回答では のように、次のことができます。
$ git ls-tree HEAD mysubmodule
160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398 mysubmodule
それは.gitmodule
ファイルの存在やmysubmodule
の内容に依存しません。
最初にインデックスからそのエントリを削除する必要があります。
git rm --cached mysubmodule
その後、続行できます。