きり丸の技術日記

技術検証したり、資格等をここに残していきます。

WindowsのGit操作で発生したFilename too longを解決する(git config --global core.longpaths true)

Macを使用している他人がコミットしたファイルをpullしようとしたらFilename too longが出力されてpullできませんでした。その解決方法を残します。

環境

  • Windows
    • 11
  • GitBash
    • 4.4.23(1)-release

ゴール

次の操作時にエラーが発生しない。

$ git reset --hard origin/develop

error: unable to create file xxx/yyy/zzz[ファイルパス] :Filename too long

解決方法

Gitのcore.longpathstrueに設定する。

git config --global core.longpaths true

備考

ChatGPTにこのエラーを直接貼り付けたら、次のメッセージが返ってきました。ある程度はあっていると思うのですが、こちらにしたがっても解決はできませんでした。レジストリ修正したのに…。

この問題は Windows のファイルシステム (FAT32 と NTFS) の制限から来るもので、ディレクトリの深さやファイル名の長さが一定の限度を超えると発生します。Windows でのパスの最大長は 260 文字と設定されています。
次のいずれかに該当する解決策を試してみてください:
- フィル名を短くする: 長いパスやファイル名を短くすることで問題を解決できます。ただし、これはファイル構造を変えることを意味するため、他の開発者との協調作業に影響を及ぼす可能性があります。

長いパス名のサポートを有効にする: Windows 10 version 1607 以降では、レジストリ エディタを通じてまたはローカル グループ ポリシー エディタを通じて長いパス名をサポートする機能が追加されています。ただし、この機能を有効にしても古いアプリケーションは最大 260 文字の制限を守る可能性があるのでご注意ください。
以下に、Windowsで長いパス名を扱う機能を有効にする手順を記載します。ただし、この操作はシステム全体に影響を与える重要な変更なので、注意深く行ってください。

## ローカル グループ ポリシー エディタを使用する方法:
「gpedit.msc」を実行します。(Windows キー + R を押して、「gpedit.msc」を入力します。)
ローカル グループ ポリシー エディタで、「コンピュータの設定」 -> 「管理用テンプレート」 -> 「システム」 -> 「ファイルシステム」に移動します。
「Enable NTFS long paths」をダブルクリックし、有効にします。
## レジストリ エディタを使用する方法:
「regedit」を実行します。(Windows キー + R を押して、「regedit」を入力します。)
レジストリ エディタで、「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem」に移動します。
「LongPathsEnabled」の値を「1」に設定します。もし「LongPathsEnabled」が存在しない場合は、「新規」 -> 「DWORD 値 (32 ビット) の作成」を選び、「LongPathsEnabled」を作成し、「1」に設定します。
いずれの方法で問題が解消しない場合は、その他の可能性を探るためにさらなる情報が必要です

ソースコード

なし

終わりに

小ネタも小ネタですが、地味に30分くらい格闘してたので残します。