はじめに
SakuraエディタでJavaファイルを編集して、GitHub Desktopを見ると──
❗「This diff contains a change in line endings from 'LF' to 'CRLF'」 という改行コードの警告が表示される
という現象に出くわしたことはありませんか?
本記事ではその理由と、どうすれば回避できるのかを簡潔に解説します
その警告の正体:「改行コードの違い」
ファイルの中で使われる「改行のルール」が、OSごとに異なることが原因です。
OS | 改行コード | 意味 |
---|---|---|
Windows | CRLF |
Carriage Return(復帰)+Line Feed(改行) |
macOS / Linux / UNIX系 | LF |
Line Feed(改行)のみ |
補足:CRとLFって何?
CR(Carriage Return):文字カーソルを行の先頭に戻す制御文字(\r)
LF(Line Feed):次の行に移動する制御文字(\n)
→ Windowsではこの2つを合わせて「改行」としています(つまり\r\n)。
なぜ警告されるのか?
Git(やGitHub Desktop)は、ファイルの中で使われている改行コードの変化を差分として検知します。
Sakuraエディタで編集したファイルが CRLF → LF に変わると、
このファイルの改行コードが変更されました
という警告が出るのです。
対策:Sakuraエディタで改行コードを「LF」に統一する
初期設定
設定 → タイプ別設定 → ウィンドウタブ → デフォルトの文字コード の「改行コード」 でLFに指定することが可能です。
名前を付けて保存
また、保存時に改行コードを指定して保存可能で、メニューバー → ファイル(F) → 名前を付けて保存(A) → 改行コード で指定することが可能です。
編集中に改行コードを指定
メニューバー → 設定(O) → 入力改行コード指定(E)で指定することが可能です。
補足:なぜLFに統一するの?
Javaなどのプログラムは、LFで書かれているのが一般的(UNIX文化)
Gitの標準設定もLFを基準とするため、意図しない差分や警告が減る
まとめ
内容 | 解説 |
---|---|
なぜ警告される? | 改行コード(CRLF → LF)の変更があったから |
どうすればいい? | Sakuraエディタの設定でLF(UNIX)に統一する |
初学者が気をつける点 | 改行コードは見えないが、Gitで差分になるので注意! |
参考サイト
https://auroralights.jp/entry/2021/04/03/233553#:~:text=%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82-,%E3%82%B5%E3%82%AF%E3%83%A9%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%81%A7%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E7%BD%AE%E6%8F%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95,%E7%BD%AE%E6%8F%9B%E3%80%8D%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%BE%E3%81%99%E3%80%82&text=%E3%80%8C%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE(E)%E3%80%8D,)%E3%80%8D%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%BE%E3%81%99%E3%80%82&text=%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82
https://b.0218.jp/20121204111528.html