Windows 上での Git 操作メモ
改行周り
1. 改行の変換をさせない設定(PC側)
txt
git config --global core.autocrlf false
git config --global core.safecrlf true
→ でもこれだと、うっかり手元で CR+LF で保存しちゃった場合に、リポジトリ側にも そのまま入ってしまう
※ CSV を Excel などのソフトで保存した場合? に注意?
2. 改行の変換をさせない設定(リポジトリ側)
.gitattributes を置くと環境によらず統一できるらしい
.gitattributes
* text=auto eol=lf
→ こうしておくと、以下のような動作となる
- checkout (clone, pull) 時の LF → CR+LF 変換は起きない (のでローカル側は LF になる)
- add 時にインデックス上は CR+LF → LF 自動変換される(ので commit 時はリポジトリに LF で入る)
もともとリポジトリに CR+LF で入っているファイルは CR+LF のままとなるので、変えたい場合は下のほうのコマンドで renormalize する必要がある
text=auto での変換対象かは自動で判定されるが、明示的に変換させたくない場合は 拡張子指定で binary と明示
.gitattributes
*.kmz binary
3. 改行を .gitattributes 設定に合わせて変換したい場合
txt
git add --renormalize .
git commit -m "Normalize line endings"
ファイル名の NFC Normalize 問題
注意点
- Mac と Windows の両方で使うリポジトリでは日本語ファイル名/フォルダ名は使わない方針とする
- 特に パピプペポ など、濁点(゛)/ 半濁点(゜)が絡む文字(合成/分解が起きる) が入るとハマる とだけ覚えておく。無理に設定しない。
ファイルシステムによって動作が異なるのでハマる
- HFS+(古い macOS の標準) → ファイル名を NFD に近い形へ正規化して保存
- APFS(現在の macOS 標準) → 正規化を保持するが、正規化に非敏感(=NFC/NFD を同一視)
- Windows の NTFS は基本的に NFC と NFD を別名として扱える(=両方作れてしまう)
Mac 側の git 設定で core.precomposeUnicode=true macOS 側の分解(NFD寄り)と Git 側(NFC寄り)のズレを吸収できるらしいが・・、その設定をくぐったものにハマるのも嫌なので、「日本語ファイル名使わない」ルールとしておく。
SSH のキーは .ssh フォルダにあるものを使いたい
git コマンドの場合
そのままで OK
TortoiseGit の場合
TortoiseGit は既定で TortoiseGitPlink を SSH クライアントとして使う
→ 設定はレジストリ側に入る。 .ssh は参照しない
.ssh フォルダを使いたい場合
→ SSH Client に ssh.exe を指定する(Settings > Network > SSH Client)
→ C:\Windows\System32\OpenSSH\ssh.exe
以下広告