1. ホーム
  2. windows

[解決済み] Git for Windows でファイル名が長すぎる

2022-03-18 07:40:29

質問

私は Git-1.9.0-preview20140217 Windows用です。私が知っているように、このリリースでは長すぎるファイル名の問題が修正されるはずです。しかし、私にとってはそうではありません。

確かに、私は何か間違ったことをしているようです。 git config core.longpaths truegit add . で、次に git commit . すべてうまくいきました。しかし、今、私が git status というファイルのリストが表示されます。 Filename too long は、例えば

node_modules/grunt-contrib-imagemin/node_modules/pngquant-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js: Filename too long

私にとっては非常に簡単な再現方法です。 ヨーマン WebアプリケーションをAngularジェネレータで作成し("yo angular")、そのアプリケーションから node_modules から .gitignore ファイルを作成します。そして、前述の Git コマンドを繰り返し実行します。

何が足りないのでしょうか?

解決方法は?

Gitはファイル名に4096文字という制限があります。ただし、WindowsでGitをmsysでコンパイルした場合は例外です。msysはWindows APIの古いバージョンを使っていて、ファイル名の文字数が260文字に制限されているのです。

つまり、私が理解する限り、これはmsysの制限であって、Gitの制限ではないのです。詳しくはこちらをご覧ください。 https://github.com/msysgit/git/pull/110

Windowsで他のGitクライアントを使うか、あるいは core.longpaths から true 他の回答で説明したとおりです。

git config --system core.longpaths true

Gitはスクリプトとコンパイルされたコードの組み合わせでビルドされます。上記の変更により、一部のスクリプトが失敗する可能性があります。これが、core.longpathsがデフォルトで有効になっていない理由です。

のWindowsドキュメントを参照してください。 https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd#enable-long-paths-in-windows-10-version-1607-and-later には、もう少し詳しい情報があります。

<ブロッククオート

Windows 10, バージョン 1607 からは、MAX_PATH の制限がなくなりました。 は、一般的なWin32ファイルおよびディレクトリ関数から削除されました。ただし 新しい動作にオプトインする必要があります。

レジストリキーにより、新しいロングパスの有効/無効を設定することができます。 の動作があります。ロングパスの動作を有効にするには、以下のレジストリキーを設定します。 HKLMSYSTEM CurrentControlSet FilterSystem LongPathsEnabled (タイプ: REG_DWORD)