前回に引き続き、ソースコードなどをバージョン管理しながらインターネット上で公開できるサービス「GitHub」を GUI で操作する無料のアプリ「GitHub Desktop」の管理に、ローカルの Git リポジトリを追加した際に表示される改行コードに関する警告について、検証と推測、その結果としての対処例を紹介します。

※ GitHub Desktop Version 3.5.0 (x64) を使用します。
※ OS は Windows 10 Home です。
本記事の概要
前回のパートに引き続き、本記事では、GitHub Desktop アプリで表示される改行コードに関する警告 (This diff contains a change in line endings from ‘LF’ to ‘CRLF’.) について調べました。
結局は、リポジトリの内容を変えてその警告が出るかどうかを検証して、その結果として、
Windows で Git の設定 core.autocrlf == true の場合に、作業ディレクトリの差分を持つテキストファイルの改行コードが LF の場合、その後行われるかもしれないチェックアウトでその改行コードが CRLF に変わる可能性を警告しているもので、それを了承していれば警告を無視して問題ない。
という推測と対処(無視で問題なし)に至りました。
以降は、その検証結果や公式の引用を紹介します。
前回の記事
前回は、表示された警告メッセージと、改行コードが CRLF のテキストファイルを管理している検証用リポジトリを作成して、GitHub Desktop アプリの差分表示で改行コードに関する警告メッセージが表示されないことを確認しました。
改行コード LF のファイルで確認
前回は、検証用のリポジトリを作成して、
- GitHub Desktop アプリにリポジトリを追加した後の操作・前の操作
- Git 管理しているファイル・管理外のファイル
- Git の差分あり・なし
- 改行コードは全て CRLF
の条件の組み合わせで警告が出るか検証しましたが、全て警告は出ませんでした。
今回は、実際に警告が出たファイルの改行コードが、前回試した CRLF ではなく LF だったので、改行コードを LF にして警告が出る条件について確認します。
準備
警告メッセージが出た readme.md ファイルを、前回作成して検証用リポジトリの作業ディレクトリに貼り付けます。

貼り付けた readme.md の改行コードが LF であることを、無料のテキストエディタ Mery で確認しました。
# Mery は何年も使わせてもらっています。紹介しなくてごめんなさい。

検証した条件の組み合わせ表記の説明
以降は、前回と同じく、わかりづらいですが、条件ごとに警告メッセージが表示されたかを、同じ形式の名前の章で1つずつ紹介します。
「アプリ追加後」は、すでに GitHub Desktop アプリに追加済みのリポジトリの作業ディレクトリでファイルを追加/変更したことを表しています。
「アプリ追加前」は、作業ディレクトリでファイルを追加/変更した後に、 GitHub Desktop アプリにリポジトリを追加したことを表しています。
「Git 管理済み」は、 Git に追加・コミットしているファイルを、 「Git 管理外」は、 Git に追加していないファイルを表します。
「差分なし」は、 Git の現在のコミットとの差分がない作業ディレクトリのファイルを、「差分あり」は差分のあるファイルを表します。
「CRLF」または「LF」は、そのテキストの改行コードです。
アプリ追加後の Git 管理外、差分なし、LF → 警告あり
先ほどの準備の章で、すでに GitHub Desktop アプリに追加してあるリポジトリの作業ディレクトリに readme.md (LF 改行コード) を貼り付けると、追加の候補としてアプリの Changes リストに表示され、それを選択すると差分が表示され、上側には警告メッセージが表示されました。

アプリ追加後の Git 管理済み、差分あり、LF → 警告あり
この readme.md ファイルを複製して readme_commit_diff.md を同じフォルダに作成しました。
そして、 Git 管理に追加・コミットしてから、一部編集して差分がある状態にしました。
改行コードは、readme.md と同じ LF です。

すぐにアプリでも検出されました。
Changes のリストで選択すると、同じく警告メッセージが表示されました。

アプリ追加後の Git 管理外&管理済み、差分あり → 警告あり
さらに readme.md を3つ複製して、 Git 管理外、コミット済み、コミット後編集して差分があるファイルを作成しました。
その3つ全ての改行コードは CRLF に変更しました。

アプリの Changes リストに表示された Git 管理外と、Git 管理済みの差分ありの改行コード CRLF のファイルを選択しても、警告メッセージは表示されませんでした。


この検証のまとめ
改行コードが LF の複数行のテキストファイルは、 Git 管理済みのファイルも Git 管理外のファイルも差分情報で警告メッセージが表示されることがわかりました。
改行コードを LF から CRLF に変更すると、警告メッセージが表示されなくなることがわかりました。
今回はここまで
今回は、 GitHub Desktop アプリに表示される、改行コードに関する警告メッセージが出るパターンとその対策について紹介しました。
次回は、 Git の改行コードに関する設定と、検証した警告メッセージの表示パターンから、この警告メッセージがどのような意図で表示されたのかの推測を紹介します。
参照サイト Thank You!
- Git
- GitHub Japan | GitHub
- GitHub Desktop | Simple collaboration from your desktop
- Git – git-config Documentation
- Git – Git の設定
- This diff contains a change in line endings from ‘LF’ to ‘CRLF’. · Issue #18225 · desktop/desktop
記事一覧 → Compota-Soft-Press
コメント