Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Git for Windows(2.25以降)でファイル名に禁則文字を含むリポジトリを Clone する方法

Linux での利用を前提としたリポジトリには、ファイル名に Windows の禁則文字が含まれている場合があります。1 しかし、Git for Windows ではファイル名に禁則文字を含むリポジトリを Clone できません。2 とはいえ、禁則文字を含まないファイルまで Clone できないのでは不便です。どうにかできないものか。

「まばらに」 Clone して問題を回避する

protectNTFS をオフにした状態で、sparse-checkout を活用すれば無事に Clone できます。

# 空のリポジトリを作成する
mkdir <リポジトリ名>
Set-Location <リポジトリ名>
git init
git remote add origin <リポジトリのURL>

# 禁則文字を含むファイルをチェックアウトするとエラーになる機能を無効化
git config core.protectNTFS false
# sparse-checkout を有効化
git config core.sparsecheckout true

# .git\info\sparse-checkout にクローン対象とするパスを記述する
# このとき、エンコードが UTF-8(BOMなし)であることに注意する
[System.IO.File]::WriteAllLines("${PWD}\.git\info\sparse-checkout", @("クローン対象1";"クローン対象2";...), (New-Object "System.Text.UTF8Encoding" -ArgumentList $false))

# 「まばらに」 Clone
git pull origin master

protectNTFS が有効な状態では、sparse-checkout でクローン対象とするパスを限定しても、 禁則文字を含むファイルがあると問答無用でエラーになってしまいます。なお、protectNTFS は Git for Windows 2.25.0 から含まれており、以前のバージョンでは sparse-checkout するだけで問題を回避できていました。


  1. 一例です。 

  2. Windows 10 の場合、「\」「/」「:」「*」「?」「"」「<」「>」「|」がファイル名に利用できません。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
Help us understand the problem. What are the problem?