##事象
Git/githubで個人開発を進めていたところ『warning: LF will be replaced by CRLF』というエラーが発生してgit add コマンドが動かなくなってしまった。
warning: LF will be replaced by CRLF in log/error_2018-11-04.log.
The file will have its original line endings in your working directory
##原因
改行コードがLFからCRLFに置き換えられようとしている模様。
##対応方法
以下のコマンドを実行で無効にできました。
git config --global core.autoCRLF false
##そもそも改行ってなんだ
改行ってbrタグとかじゃないんですか????LF/CRLF????というような、
という状態だったので調べてみました。
HTMLファイル(css/JavaScript/image)はパソコンやモバイルのブラウザのレンダリングエンジンによって解釈され表示されるようです。
単純に『HTMLファイル内で改行があったから』改行するのではありません。
つまりブラウザ側でレンダリングされる時に『ここで改行した状態で画面上に表示してね』と表すのがbrタグの役割のようです。
##じゃぁLFやCRLFって何なんなのか・・???
上記で説明した『HTMLファイル内で改行があったから』という部分を示すものが改行コードになります
。
分かりやすい例で言うと、エディタ等で改行をボタンを押すと以下のような記号『↩︎』表示がされる場合を思い浮かべると良いかもしれません。
これが改行↩︎
コンピュータに改行があると伝えます↩︎
##コンピューターに改行を知らせる
このように文字列の改行するところには、改行コードという見えない特殊文字が入っています。
その一方で残念なお知らせがありました。
コンピュータの世界で改行コードが統一されていればよいのですが、あいにく、統一されていないのです。
以下はwikipedia先生より。
ASCII文字コードに基づくシステムでは、CR(復帰、0x0D)、LF(改行、0x0A)、またはCR+LFで表している。
LF: UNIXやUnix系のシステム。Linux、AIX、Xenix、macOS、BeOS、Amiga、RISC OSなど。
CR+LF: CP/M、MP/M、MS-DOS、OS/2、Microsoft Windows。
CR: コモドールによるシステム、Apple IIファミリ、Mac OS(バージョン9まで)、OS-9。
改行コードには種類があります。
そのため、対応している改行コードでないと正しくコンピュータに読み込ませることができないのです。
今回のケースでいうとLFという改行コードが自動的にCRLFに置き換えられてしまったことが原因のようです。
##まとめ
今回のように調べれば簡単に出てくるエラーでも一歩踏み込んで『このエラーはどういう意味なのか』『解決コマンドによってどう変わるのか』『そもそもどういう仕組みなのか』というところまで勉強していくことで少しづつ理解できる範囲が広がっていくのだなと実感しました。
引き続き頑張ります。