3

ユーザーがアップロードしたファイルでいっぱいのディレクトリを持つgitリポジトリがあります。このディレクトリには、.gitignoreも含まれています*/

リモートリポジトリからプルを実行しましたが、ディレクトリ内のこれらのファイルはすべて警告なしに削除されました。

何が原因でこれが起こったのでしょうか?

私が行ったすべての調査によると、これらのファイルをすべて削除することは意図的なアクションであり、誤って行うことはできません。それは本当ですか、それともそれらのファイルをすべてサイレントに削除する別のgitコマンドがありますか?

4

1 に答える 1

2

.gitignoreは、ステータスレポートにノイズが表示されたり、自動的に追加されたりするのを防ぐ便利な機能git add .です。無視されたファイルを明示的に追加すると、gitはとにかくその特定のファイルを気にし、.gitignoreでファイルに名前を付けても、gitはすでに追跡されているファイルを気にしなくなります。

ファイルgit pullが削除された場合、それらのファイルは追跡され、削除されました。git checkout "@{may 21 17:30 pdt}"プルの時点でチェックアウトされたコミットについて、またはそのような参照 によってそれらを取り戻すことができます。

誰かがファイルを追加し、変更をコミットせず、強制的にマージして孤立したものを見つけにくくする可能性はありますが、誰かが明示的にgitのメモリgit fsck --lost-foundをワイプした場合を除いて、古いundeleteプログラムのように、すべてのコピーがドロップされます。これまで気にかけていましたが、その後に破棄されまし.git/lost-foundた。

git ls-files -ic --exclude-standard無視仕様に一致する追跡ファイル、つまり誰かが誤って追加または無視した可能性のあるファイルが表示されます。考えてみると、それはプレコミットフックにとって悪いラインではないかもしれませんが、

git ls-files -ic --exclude-standard \
| sed '${p;s,.*,*** '"$0"' refusing commit with tracked files marked as ignored in the standard excludes lists,;q1}'
于 2012-05-22T15:19:51.860 に答える