CygwinでGitを使うと.gitconfigが効かない問題
Windows機にCygwinを入れ、その上でGitを使おうとして少しハマったのでメモ。
現象
僕はGitHubでdotfilesを管理し、Zsh / Tmux / Vimの設定ファイルをほぼ自動でデプロイできるようにしている。
以前にCygwin環境を構築したWin機では、特に問題なく設定ファイルを使用できていたので、 今回も同じようにリポジトリをcloneし、インストール用のスクリプトを動かそうとすると、 下記のように怒られた。
'r\' command not found
これはWindowsとLinux系で改行コードが違うことから発生する問題で、cloneしたリポジトリ内のファイルの fileformatをいくつか見てみると、確かにすべてDOS形式になっていた。
試したこと
適当にググって、以下のことを試した。
clone時の改行コードの変換設定を変更
Cygwin内で以下のコマンドを実行。
> git config --global core.autocrlf input
~/.gitconfig
に以下の設定が追加されていることを確認。
……
[core]
autocrlf = input
……
この状態でリポジトリを再cloneするも、解決せず。
どうやら.gitconfigが効いていない様子。
GitHubから直接ZIPファイルを落とす
さすがにファイルフォーマットはunixになっていて、デプロイも問題無く行うことができた。
しかし、ZIPファイルでダウンロードしてきたリポジトリには.gitフォルダが作成されないので、
リポジトリに変更があった際にgit pull
できず、その都度最新のZIPを落として展開……などという
無駄につらい作業が発生してしまう。
また、この手段では今回の問題の本質的なところは解決せず、別のリポジトリを取得して実際に開発を行う場合に 結局同じ問題が発生することになるので、この案は最悪の手段として一旦保留にした。
解決
何気なくwhich git
してみたら、なんと以下のように表示された。
> which git /cygdrive/c/Program Files/Git/cmd/git
以前同機にインストールした、Git for Windowsのgitコマンドのパスだ。 原因はこれだった。
Git for Windowsは~/.gitconfig
ではなくWindowsユーザーフォルダ直下の.gitconfigを見に行くため、
~/.gitconfig
をいくら編集しても意味が無かったということだった。
Git for Windowsはもう使っていなかったのでアンインストールし、Cygwinのsetup.exeでgitをインストールすると問題が解決した。
setup.exeでgitをインストールするのを忘れていて、かつGit for Windowsのおかげでgitコマンドが使えてしまっていたせいで時間をとられてしまった。