2

私のスーパープロジェクトにはmasterdevの 2 つのブランチがあります。最初は両方のブランチにサブモジュールがありましたが、今はdevブランチにのみ保持する必要があります。そのために、マスターブランチに切り替えてそこから削除しました (ここで概説されている手順に従います)。これで、 devブランチからmasterブランチに切り替えるたびに、 warning: Cannot rmdir path/to/submodule: Directory not emptyというメッセージが表示されます。git statusまた、masterブランチで行うたびに、git は Untracked ファイルの下にサブモジュールを一覧表示します。

このサブモジュールについて文句を言わないように git に指示する方法はありますか? マスター ブランチにサブモジュール パスを追加しようとし.gitignoreましたが、効果がないようです。また、フォルダーがあるブランチに存在し、別のブランチには存在しない場合に git が文句を言わないのはなぜですか?

編集:サブモジュールを削除するときに、関連するセクションをファイルから削除しませんでした.git/config。これは、dev ブランチでまだ必要だったからです。

4

1 に答える 1

1

この回答には、サブモジュールを削除する方法に関するより完全な手順があります。

サブモジュールを削除しようとしているほとんどのユーザーがつまずくポイントは次のとおりです。

git rm --cached path_to_submodule (no trailing slash)

これは、サブモジュールへのパスが一般的に削除されたため (rmコマンドではなく、単純な OS コマンド)、つまり、サブモジュールが表示されなくなったためです。 それでも、それはまだインデックスに記録されています。git rm


1 つのブランチでのみサブモジュールを削除する必要がある (そして他のブランチで保持する) 必要がある場合は、次のことを行う必要があります。

  • 変更しない.git/config: これはすべてのリポジトリ (およびそのすべてのブランチ) で使用されるローカル構成です: したがって、ここではありません(サブモジュールに関するgit submodule deinitもののみを消去します)。.git
  • 次のサブモジュール エントリを削除します。
    • .gitmodulesファイル (異なるブランチでそのファイルの異なるコンテンツを持つことができます)
    • インデックス: git rm --cached path_to_submodule(末尾のスラッシュなし): ここでも、1 つのブランチでのみ行う変更です。
于 2013-06-22T07:26:42.283 に答える