私は非常にシンプルな 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 はどのように反応しますか?