git add
すると以下のような警告が表示された。
$ git add . warning: LF will be replaced by CRLF in .gitignore. The file will have its original line endings in your working directory warning: LF will be replaced by CRLF in README.md. The file will have its original line endings in your working directory warning: LF will be replaced by CRLF in index.js. The file will have its original line endings in your working directory warning: LF will be replaced by CRLF in package-lock.json. The file will have its original line endings in your working directory warning: LF will be replaced by CRLF in package.json. The file will have its original line endings in your working directory
「なんじゃこりゃ?」と思って調べてみると
どうやらGitにはcommit
した時とcheckout
した時に自動で改行コードを変換する機能があるらしい。
- Mac/LinuxにインストールされているGit
→CRLFをLFに自動変換する
- WindowsにインストールされているGit
→LFをCRLFに自動変換する
つまり、先ほどの警告は「LFな改行コードは自動でCRLFに置き換えるで?」ということを言ってるらしい。
この自動変換機能がONになっているかどうかは、以下のコマンドで確認できる。
$ git config core.autocrlf true
これをfalse
にすれば、この自動変換機能をOFFにできるらしい。
まぁ改行コードが混在してるより統一されてる方がスマートなのでこの機能がデフォルトでONになってるのは分かるけど
でもよくよく考えると「そもそもLFのファイルとCRLFのファイルが混在しているのが問題なのでは?」と思ったので、根本的な解決をすることにした。
まず、私が使用しているOSはWindowsなので
- Windowsで作成したファイルはすべてCRLFとなるのに対し、
- Linuxのコマンドやnpmのコマンドなど開発系のツールで作成されるファイルの改行コードはすべてLFとなる。
というのが根本的な問題なわけです。
なので以下のようにして、すべてLFに統一することにしました。
- VScodeのデフォルトの改行コードを以下のようにLFに指定する
- 既存のCRLFなファイルは、VScodeの右下から、CRLF→LFに変更する
git config --global core.autocrlf false
を打つ
これで、VScodeで作成されるファイルはすべてLFになるし、Gitも改行コードについてはノータッチになるし、既存のファイルもすべてLFになる。
もともとLinuxも全部LFだし、最近のMacだって全部LFだし、LFに合わせた方が絶対いいですよね。
まぁ個人で開発するような場合は、改行コードが混在していようがどうでもいいと思いますし
ぶっちゃけ別にチームで開発している場合でも文字コードが混在していても特に不都合はないと思うので、どうでもいい気がしますが。。
おわり
コメント