
WindowsでGit cloneしても中身がクローンされなかった話
GitリポジトリをクローンするとGitディレクトリを残してその他ファイルがすべて削除されてしまういうことがありました。
クローン自体はエラーなど出ず完了しましたが、Gitログをみると下記のようなログを発見。
2024-11-20 12:56:24.394 [info] error: invalid path '../../〇〇/〇〇/index.html?no=1.html’
パラメータ付のファイルが無効なパスとして扱われているのが原因になっていそう。
原因はwindowsでは使用できないファイル名があるためディレクトリにとどめておくことができないようでした。
windowsでは使用できない文字
Windowsには禁止文字というのが存在し、その文字を使用したファイル名などは新規作成することができません。
NTFS(NT File System)Windows標準のファイルシステム
※WindowsNT系から使用されているファイルシステム
\
/
:
?
“
<>
‘
|
ファイル名およびフォルダー名に使用できない文字(予約語)
com1, com2, com3, com4, com5, com6, com7, com8, com9, lpt1, lpt2, lpt3, lpt4, lpt5, lpt6, lpt7, lpt8, lpt9, con, nul, prn
予約語とは
プログラム言語やシステムによって、あらかじめ用途が決めらていて使えない名前。
Macでは使用できない文字
:(コロン)※;(セミコロン)は使える
.(ドット)から始まる名前
※versionによって違うかもしれません。
解決までの流れ
Git リポジトリをクローン
↓
エラーは発生せずクローンは完了
ファイルが削除されている状態を確認
↓
原因調査
ログを確認したところ「?」を含むファイル名が多量に存在ししていることが原因と判明。
windowsでは「?」を含むファイル名は無効のため実行できない。
↓
解決策調査
↓
対策
Git の設定変更して実行
git config --global core.protectNTFS false
git clone <リポジトリURL>
※またはMac環境で実施
まとめ
上記の対策を実行し、リポジトリのクローンに成功しました。以降は正常にファイルを確認・操作できるようになりました。
今回は、Windows のファイルシステム制限に起因するものでしたが、対応策としてGitの設定変更や他のプラットフォームの利用で解決可能でした。このような問題が発生しないためには、プロジェクト全体での命名規則徹底やクロスプラットフォームでのテストを強化していくとよいと思います。