71

path にサブモジュールが含まれていたプロジェクトがありますmysubmodule。ソース (1.8.3-rc2) から最新の Git をインストールして実行しましgit submodule deinit mysubmoduleた。.gitmodules次に、ファイルを削除し、変更をコミットしました。また、フォルダ.gitからディレクトリを削除しました。mysubmodule

mysubmodule今すぐレポにファイルを直接コミットしたいのですが、git は変更がないと言っています。入力git add mysubmoduleしても何もしません。入力git add mysubmodule/file.txtすると、fatal: Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'

また、リポジトリの新しいバージョンをチェックアウトすると、ファイルmysubmoduleがないにもかかわらず、ディレクトリが作成されることも発見しました。.gitmodulesそして、実行git submodule initするとNo submodule mapping found in .gitmodules for path 'mysubmodule'エラーが発生します。

これを修正するにはどうすればよいですか?

4

1 に答える 1

96

mysubmodule特別なモード「160000」でインデックスに記録されているため、Git はまだサブモジュールだと思います。
詳細については、「git サブモジュールの更新は最初だけ必要ですか?」を参照してください。
それを確認するには、この回答のように、次のことを実行できます。

 $ git ls-tree HEAD mysubmodule 
 160000 commit c0f065504bb0e8cfa2b107e975bb9dc5a34b0398  mysubmodule 

.gitmoduleこれは、ファイルの存在や .xml の内容には依存しませんmysubmodule

最初にそのエントリをインデックスから削除する必要があります。

 git rm --cached mysubmodule

その後、続行できます。

于 2013-05-16T07:09:46.947 に答える