他の解決策は私にはうまくいきませんでした。サブモジュールを削除する方法に関する上位の回答に続いて、次のコマンドを使用しました。これは、複数のフォルダーでサブモジュールを指定できるため、より柔軟です。
git filter-branch -f --prune-empty --tree-filter '
for SUBMODULE_DIR in submodule-dir-1 lib/submodule-dir-2 lib/submodule-dir-3
do
if [ -d $SUBMODULE_DIR ]; then
git submodule deinit -f $SUBMODULE_DIR
git rm -rf .git/modules/$SUBMODULE_DIR
git rm -f $SUBMODULE_DIR
fi
done
git rm -f --ignore-unmatch .gitmodules' HEAD
事実上、各コミットのサブモジュール フォルダーのリストをチェックしています。サブモジュール フォルダーが存在する場合は、サブモジュールを完全に削除します。技術的にはそれだけで十分ですが、ファイルを削除したい場合もあり.gitmodules
ます。特定のサブモジュールのみを削除したい場合は、その行に追加の作業が必要になる場合があります。