私は非常にシンプルな git リポジトリを持っており、これを使って git を学習しています。に加えて 2 つのブランチがありmasterます。javafx、netty。各ブランチ内に新しいプロジェクト モジュールを作成しました。ブランチの場合netty、プロジェクト レイアウトは次のようになります。
sandbox
netty
ブランチの場合javafx、プロジェクト レイアウトは次のようになります。
sandbox
javafx
ブランチ間を切り替えるときはいつでも、作業ディレクトリに他のブランチのディレクトリが残っていました。ブランチを何度も切り替えましたが、余分なディレクトリは削除されませんでした。作業ディレクトリを適切にクリーンアップする方法を学ぶ必要があると判断し、nettyブランチで次のコマンドを実行しました。
git clean -fd
まさに期待どおりの動作でしたが、Git のチェックアウト動作が異なっているようです。nettyブランチからブランチに切り替えると、javafx以前と同じです。余分なnettyディレクトリは作業ディレクトリに残ります。javafxただし、ブランチからブランチに切り替えるnettyと、javafxディレクトリが自動的に削除/クリーンアップされます。
ただし、別のマシンでリポジトリを複製しても、以前と同じように機能します。追跡されていないファイルはすべて作業ディレクトリに残されます。git clean -fdある種の永続的な効果がありますか?
編集:さらに遊んだ後、これは私のIDE(IntelliJ IDEA)と関係があることに気付きました。アクティブなプロジェクト モジュールを含まない別のブランチをチェックアウトしたときに、Git がアクティブなプロジェクト モジュールのディレクトリを削除できないようです。
たとえば、自分のnettyブランチでブランチをチェックアウトすると、Git はディレクトリjavafxを削除できないようです。nettyただし、IDEA プロジェクトを再生成せずにブランチを再チェックアウトするとnetty、Git は問題なくjavafxディレクトリを削除します。
私のIDEがこれらのディレクトリが一度削除されるのを防いだ後、私がgit clean -fd. IDE を閉じてブランチを切り替えても、何も変わりません。
IDE を起動せずにリポジトリのクローンを作成してブランチをチェックアウトすると、すべてが期待どおりに機能します。新しいブランチをチェックアウトすると、無関係なディレクトリが削除されます。
新しいブランチがチェックアウトされたときに別のプロセスが不要なファイルの削除を妨げた場合、Git はどのように反応しますか?