【Git】「Filename too long」エラーの原因と対処方法

この記事ではGitの「Filename too long」エラーについて、

  • Gitの「Filename too long」エラーの原因
  • Gitで「Filename too long」エラーが発生した場合の対処方法

などを用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。

Gitの「Filename too long」エラーの原因

Gitで「Filename too long」エラーは、ファイルパスの文字数が長い場合に発生します。具体的には、Windowsの場合、ファイルパスが260文字を超えるとエラーが発生します。

macOSやLinuxなどのUnix系のOSではファイルパスの最大長はWindowsよりずっと長く設定されています(たとえば、Linuxでは4096文字まで可能です)。そのため、Macなどでは問題ない文字数でもWindowsではエラーに引っかかることがあります。

Gitで「Filename too long」エラーが発生した場合の対処方法

「Filename too long」エラーを対処するには、コマンドプロンプト、PowerShell、Git Bash等のgitコマンドを実行できる環境を管理者権限で起動して、以下の1行を実行します。

git config --system core.longpaths true

Git for WIndowsでは260文字以上のファイルパスを許可する設定(core.longpaths)がデフォルトでは無効になっています。上記のコマンドを実行すると、その許可設定(core.longpaths)が有効になり、ファイルパスの文字数が長い場合でもエラーが発生しなくなります。

管理者権限で実行している理由は設定の適用範囲をシステム(--system)に指定しているからです。システムの設定には管理者権限が必要になります。

core.longpathsの設定の適用範囲を変える

Gitの設定には、設定の適用範囲を指定するため、システム(--system)、グローバル(--global)、およびローカル(--local)の3つのレベルがあります。これら3つのレベルでのコマンドの違いを次に説明します。

git config --system core.longpaths true

  • このコマンドは、システム全体の設定を変更します。つまり、そのコンピューター上のすべてのユーザーとすべてのリポジトリに影響します。
  • システムレベルでの設定(--system)は、Gitのシステム設定ファイル(例えば、WindowsではC:\ProgramData\Git\config)に保存されており、git config --system core.longpaths trueを実行すると、その設定ファイルにcore.longpaths設定が追加されます。
  • コンピューターを使用するすべてのユーザーに対して、設定を適用したい場合に適しています。
  • 管理者権限が必要です。

git config --global core.longpaths true

  • このコマンドは、現在のユーザーのすべてのリポジトリに対する設定を変更します。
  • グローバルレベルの設定(--glocal)は、ユーザーのホームディレクトリにあるグローバルGit設定ファイル(例えば、~/.gitconfig)に保存されており、git config --global core.longpaths trueを実行すると、その設定ファイルにcore.longpaths設定が追加されます。
  • 特定のユーザーが使用するすべてのリポジトリに対して、設定を適用したい場合に適しています。
  • 管理者権限は不要です。

git config --local core.longpaths true

  • このコマンドは、現在のリポジトリの設定を変更します。
  • このレベルでの設定は、そのリポジトリの.git/configファイルに保存されており、git config --local core.longpaths trueを実行すると、その設定ファイルにcore.longpaths設定が追加されます。
  • 特定のリポジトリにのみ設定を適用したい場合に適しています。リポジトリごとに異なる設定が必要な場合に役立ちます。
  • 管理者権限は不要です。
  • ローカルレベルの設定(--local)は、特定のプロジェクトの設定をカスタマイズするのに最適です。デフォルトでは、git config コマンドはローカル設定を変更しますが、明示的に --local オプションを指定することもできます。

補足

設定の優先順位は、ローカル > グローバル > システムです。つまり、同じ設定が複数のレベルで定義されている場合、ローカルレベルの設定が優先されます。

本記事のまとめ

この記事ではGitの「Filename too long」エラーについて、以下の内容を説明しました。

  • Gitの「Filename too long」エラーの原因
  • Gitで「Filename too long」エラーが発生した場合の対処方法

お読み頂きありがとうございました。