おれさまラボ

実際に手を動かして理解を深めるブログ。

Gitでロングパス制限にかかったときの対処法

はじめに

通常の git clone は履歴のダウンロード後に全ファイルをローカルに展開します。このとき Windows の MAX_PATH 制限(既定で 260文字)が超えると失敗してしまい、困りましたので対処法をまとめておきます。

対処法

以下を実行すると良いです。

# 部分クローン
git clone --filter=blob:none --no-checkout https://github.com/XXX/XXX.git
cd Netskope-Docs-Archiver

# Sparse Checkout有効化
git sparse-checkout init --cone

# 除外したいパスを指定
git sparse-checkout set --skip-checks '!docs'

# チェックアウト
git checkout main

解説

--filter=blob:none を付けると、ファイル本体(blob)を取らずにメタデータだけ取得するため、展開時に長いパスのファイルがローカルに生成されません。さらに --no-checkout でそもそも作業ツリーを展開しないので、長いパスが存在しても問題になりません。

このあと、git checkoutgit sparse-checkout で長いパスを含むファイルを取得しようとすると、そこで初めてロングパス制限に当たります。

なので、長いパスを含むパスを指定して除外しておけば良い、ということです。

おわりに

最近、AIが開発の手助けをしてくれるおかげで、GitHubのような開発ツールに触れる機会も増えました。触ってみて、はじめて気づくこともたくさんありますよね。ほんと。

以上

P.S. 役に立ったなと思った方はビール一杯奢ってください!

この続きはcodocで購入