質問: gitは空のフォルダーを削除しますか? 作業フォルダのディレクトリからすべてのファイルを削除しましたが、ディレクトリ自体はまだ存在しています。変更をリモートリポジトリにプッシュした後( github )プロジェクトをチェックしたところ、ディレクトリがなくなっていることに気付きました。 gitが空のフォルダーを削除することは可能ですか?
回答: ディレクトリが表示されないのはなぜですか?gitはディレクトリを追跡しません。ファイルを追跡するだけです。ディレクトリにファイルがない場合、ファイルを追加または削除しても、そのディレクトリはgitに「存在」しません。特に、ディレクトリからすべてのファイルを削除してその変更をインデックスに追加すると、ディレクトリはgitのインデックスから消えます。逆に、ディレクトリが空の場合、git addを介してディレクトリは追加されません。言い換えると、ファイルブラウザでローカルにディレクトリを表示できても、githubから消えた場合は、ディレクトリからすべてのファイルを削除し、その変更をインデックスに追加して、コミットしてプッシュしました。空のディレクトリを追跡するにはどうすればよいですか?空のディレクトリを明示的に追跡する場合は、その中にファイルを作成する必要があります。 gitは空のディレクトリを追跡しないので、ディレクトリ内のファイルをgitのインデックスに追加することで、追跡を行わせる必要があります。通常、人々は追跡したいディレクトリに.gitkeepというファイルを保存しますが、当面はディレクトリを空のままにしておく必要があります。もちろん、ファイルanyに他の名前を付けることができますが、.gitkeepという名前は慣例です。 .gitkeepファイル(.で始まるため)は、ほとんどのシステムでファイルリストに表示されません。.gitkeepの代わりに、代わりにreadmeファイルをそこに置くことを好むユーザーもいます。理想的には、最初にディレクトリが存在しなければならない理由の簡単な説明が付いています。例$ mkdir foo $ git init $ git add . $ git ls-files # which files does git know about? # apparently, none $ touch foo/bar # create a file in the directory $ git add . $ git ls-files # does git know about it now? foo/bar # yep! ここで、fooディレクトリは、ファイルが含まれる場合にのみインデックスに追加されます。本当に空のディレクトリを追跡したい場合はどうしますか?つまり、原則として、基礎となるデータ構造により、gitは空の「ツリー」で表されるため、空のディレクトリを格納できます。 here および here をさらに読んでください。