Git for Windows でファイル名が長すぎる 質問する

Git for Windows でファイル名が長すぎる 質問する

私はGit-1.9.0-preview20140217Windows で使用しています。私の知る限り、このリリースではファイル名が長すぎる問題が修正されるはずです。しかし、私の場合はそうではありません。

間違いなく何か間違っています。git config core.longpaths trueとを実行してgit 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

私にとっては再現するのはとても簡単です。ヨーマンAngular ジェネレータ ("yo angular") を使用して Web アプリケーションを作成し、ファイルnode_modulesから削除します.gitignore。次に、前述の Git コマンドを繰り返します。

ここで何が欠けているのでしょうか?

ベストアンサー1

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

私の理解する限り、これは msys の制限であり、Git の制限ではありません。詳細については、以下を参照してください。https://github.com/msysgit/git/pull/110

これを回避するには、Windows で別の Git クライアントを使用するか、他の回答で説明されているようにcore.longpaths設定してください。true

git config --system core.longpaths true

注:https://github.com/desktop/desktop/issues/8023#issuecomment-515115353Githubデスクトップ(および他のGit GUIも)は--global設定を読み取りますが、--system設定は読み取りません。

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

Windowsのドキュメントhttps://learn.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 以降では、一般的な Win32 ファイルおよびディレクトリ関数から MAX_PATH の制限が削除されました。ただし、新しい動作を選択する必要があります。

レジストリ キーを使用すると、新しい長いパスの動作を有効または無効にできます。長いパスの動作を有効にするには、レジストリ キーを HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled (タイプ: REG_DWORD) に設定します。

おすすめ記事