10

abc~1フォルダは、、、などのファイル名を持つファイルで構成されてい123~1ますa1d2~3

私がgit add --allそれをするとき、それは言います、

$ git add --all
error: Invalid path 'abc~1.png'
error: unable to add abc~1.png to index
fatal: adding files failed

試行錯誤を繰り返したところ、チルダ記号の後に数字が続く場合にのみ、このエラーが持続することがわかりました。

フォルダーが git によって初めて追跡される場合、他のファイルも Git によって追跡されません。

$ git clean --dry-run
Would remove Rest.png
Would remove abc~1.png

この問題を解決する方法を教えてください。

4

1 に答える 1

17

これは、 2014 年 12 月に msys Git に加えられた変更の結果です。

Windows のデフォルトのファイルシステムである FAT および NTFS では、下位互換性のために DOS スタイルの 8.3 ファイル名がサポートされています。つまり、同じファイルを参照する方法が複数あるということです。たとえば、ファイル credential-cache--daemon.c は、CREDEN~1.C を介してアクセスすることもできます (別のファイルがいわゆる「短い名前」に既にマップされている場合を除きます。つまり、正確な短い名前は予測できません)。

このマッピングは予測できないため、Windows でそのようなファイル名を禁止する必要があります。同時に、Windows のファイル システムと互換性のない他のファイル名 (NUL、CON など) も除外します。

以前のコミットで導入された core.protectNTFS ガードを使用して、適切な場合にのみそのようなファイル名を防止するようにします。

この動作を無効にするには、次を実行できます。

git config core.protectNTFS false

ただし、新しい動作はユーザーを保護するためのものであるため、ファイルを追加した後に元に戻すことをお勧めします。

git config core.protectNTFS true

名前にチルダを含むファイルを追加する必要がある場合、またはそのようなファイル名を含むブランチをチェックアウトする必要がある場合にのみ、この保護を無効にしてください。

一般に、Windows 環境で作業する場合は、このようなファイル名を避けることをお勧めします。

于 2015-03-27T12:10:36.603 に答える