1

私は、php「library」という名前のディレクトリが常にgit.

phpその理由は、このディレクトリは、ユーザーがアプリケーション内からサーバーにアップロードする可能性のある他のファイルやフォルダーのストレージに使用されるためです。そのため、ローカル マシン上のアイテムと、使用しているステージング サーバー上のさまざまなアイテムが含まれています。これらは決して削除しないでください。

できることを理解しています。「ライブラリ」ディレクトリですが、ある時点でgitignoregitがアイテムを削除する可能性があるという警告を読んでいます。gitignored

ディレクトリまたはファイルを明示的に保護する方法はありますか?

4

2 に答える 2

2

Git は、ある時点で実際にリポジトリの一部である場合にのみ、ディレクトリまたはファイルを削除します。ブランチにこれらのファイルが含まれていない場合、Git はそれらにまったく触れません。たとえそうであっても。データは失われません。

それを理解するには、Git でのチェックアウト時に何が起こるかを理解する必要があります。ブランチ A にいて、ブランチ B をチェックアウトしたいとします。Git が行うことは、ブランチ A に含まれていてクリーンな(つまり、コミットされていない変更がない) すべてのファイルを削除することです。次に、Git はブランチ B からすべてのファイルを作成します。ここで、ブランチ A がファイルを追跡したがブランチ B が追跡しなかった場合、そのファイルはチェックアウト時に削除されます。同じことがディレクトリにも当てはまります (Git はファイルのみを追跡し、ディレクトリは必要に応じて作成/削除されるため)。しかし、ブランチ A に戻ると、ファイルは再び復元されています。

これを要約すると、ファイルが Git リポジトリの一部であり、新しいチェックアウト ターゲットにそのファイルが含まれていない場合にのみ、ファイルが削除されます。それ以外の場合は、そのままの場所に残されます (Git はそれについてさえ知らないため)。

したがって、そのディレクトリ内のファイルを Git 内で追跡したくない場合は、それを に.gitignore追加し、リポジトリに手動で追加しないでください。

于 2013-09-28T23:19:33.587 に答える