10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-08-20

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 の場合、「\」「/」「:」「*」「?」「"」「<」「>」「|」がファイル名に利用できません。

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?