GitHub:プルリクでファイルの全行が変わったと出る
キーボードで改行するたびに、改行コードという見えない文字が入ります。改行コードの扱いは OS ごとに違います。Git と GitHub で共同作業するとき、たとえば自分は Windows、相手は macOS で変更していると、Git が思わぬ結果を出すことがあります。Git に改行コードを扱わせる設定をすると、差分の問題を避けられます(GitHub の Git で改行コードを扱う設定・2026年10月28日に確認)。
全行が変わって見える理由
- 改行コードが違う:テキストのファイルは行ごとに改行コードで終わります。別の OS の改行コードで保存し直したファイルは、見える文字が同じでも全行が違います。
- 設定を変えた後:
core.autocrlfを設定したり.gitattributesをコミットしたりすると、Git は新しい設定に合わせて改行コードを自動で変えます。触っていないファイルにも変更があると出ることがあります。 - テキストかバイナリか:Git はリポジトリのファイルがテキストかバイナリかを自動で決めます。バイナリのファイルが壊れないように、
.gitattributesでバイナリと明示するよう GitHub は勧めています。
設定が何をするか
core.autocrlf:自分のマシンで Git が改行コードをどう扱うかを変えます。Windows ではtrueを渡します。取り出したファイルの改行コードは Windows 向けになり、コミットのときに Unix の形に変わります。macOS と Linux ではinputを渡します。.gitattributes:リポジトリの一番上に置き、ほかのファイルと同じくコミットするファイルです。当てはまるファイルの改行コードを Git がどう読むかを決めます。参加者全員について、各自の Git の設定より優先されます。- 書ける設定:
text=autoは Git が一番よいと考える扱いにします。text eol=crlfは取り出すときにいつも CRLF に、text eol=lfはいつも LF に変えます。binaryはテキストではないので変えないよう Git に伝え、-text -diffと同じ意味です。
どうするか
- 全員の設定をそろえる:
.gitattributesをコミットします。たとえば既定に* text=auto、CRLF や LF のままにするテキストのファイル、バイナリのファイルを書きます。 - リポジトリを正規化し直す:先に残っている変更を add してコミットし、
git add --renormalize .で今のブランチの全ファイルを新しい設定に合わせます。git statusで書き換わったファイルを見てから、GitHub の手順のとおり、それだけのメッセージでコミットします。 - 差分がまったく出ないとき:GitHub が変更を出さないファイルや、レビューで空白を隠しているときは、ファイルの差分が出ないを参照。
IntelliJ IDEA は改行を脇に置いて比べ、改行だけの変更にはお知らせを出す
IntelliJ IDEA に入っている GitHub の機能が、改行が変わったファイルをどう見せるか。ソース(2026年10月31日に確認・IntelliJ IDEA:DiffContentFactoryImpl.java・SimpleDiffViewer.java・TextDiffViewerUtil.java・DiffNotifications.kt・DiffBundle.properties)では:
- 変わったファイルとして並ぶ:ファイルの一覧は GitHub のものなので、GitHub が変わったと言うファイルは一覧に入ります(一覧と diff の作り方はファイルの差分が出ない)。
- 改行を除いて比べる:diff が版を文字として読むとき、改行を1つの形にそろえ、元の種類は脇に取っておきます。なので、改行だけが変わったファイルは、左右に並べる diff で変わった行が無く、Contents have differences only in line separators というお知らせが出ます(文字コードも変わったときは Contents have differences only in line separators and encoding)。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。プルリクのレビュー・チェック・会話を差分の隣に並べ、対象のブランチが許す方法でマージします。GitHub が変更ありと返すファイルを並べ、それぞれをマージベースと head のコミットのファイルで IDE の差分に開きます。.gitattributes は読まないので、改行コードが変わったファイルもほかと同じく並べます。受信箱・差分・会話は無料、承認・コメント・解決・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
GitHub は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:GitHub のマージの断り(405・409) · GitHub のレビューの断り(422) · GitHub の検索の 422「Validation Failed」 · 「Resource not accessible by personal access token」 · 401「Bad credentials」 · 「Resource protected by organization SAML enforcement」 · 「API rate limit exceeded」 · GitHub の差分の 406「too_large」・3,000件 · GitHub の行のコメントの 422「must be part of the diff」 · GitHub のブランチの更新の断り(422) · GitHub のプルリクが作れない(422・403) · GitHub の自動マージの断り · GitHub の下書き・レビュー準備完了・閉じるの断り · GitHub の会話の解決の断り · GitHub のチェックが出ない(check runs の 403) · GitHub のファイルの中身が読めない · GitHub の比較の断り(404・422) · GitHub のコメント・返信の断り(ロック・アーカイブの 403) · GitHub のマージの方法の断り(405) · GitHub のブランチが見つからない(404・301) · GitHub Enterprise Server につながらない · GitHub のレビューの依頼が出ない · GitHub のプルリクの一覧が足りない · GitHub の 404・名前を変えたリポジトリ(301・307) · GitHub の行のコメントが outdated・差分に無い · GitHub のプルリクの更新・通知が遅い · GitHub の変更の提案が適用できない · GitHub の必須チェックが Expected のまま · GitHub でコードオーナーのレビューが要る · GitHub で未解決の会話がマージを止める · GitHub で署名の無いコミットがマージを止める · GitHub のマージキューでマージするブランチ · GitHub でマージが最後の push の承認を待っている · GitHub でマージがコードスキャンの結果を待っている · GitHub でマージがコード品質の結果を待っている · GitHub でコードのカバレッジの水準がマージを止める · GitHub でライセンスの適合の結果がマージを止める · GitHub でブランチのロックや更新の制限がマージを止める · GitHub でマージの後にブランチが消えない · GitHub でチームの承認(Required reviewers)がマージを止める · GitHub でシークレットスキャンのアラートがマージを止める · GitHub でスタックしたプルリクがマージできない · GitHub で push の規則が push を止める · GitHub でコミットのメタデータの規則がマージを止める · GitHub で強制 push が止められる · GitHub でプルリクをマージしても issue が閉じない · GitHub のプルリクを手元にチェックアウトできない · GitHub のプルリクがマージ先と衝突している · GitHub で変更を依頼された・レビューを取り消す · GitHub で共同作者がコミットに数えられない · GitHub で依存関係のレビューのチェックが失敗する · GitHub で Dependabot がプルリクをリベースしない · GitHub でフォークが同期できない · GitHub でプルリクのベースのブランチを変えられない · GitHub でプルリクを取り消せない · GitHub でプルリクのテンプレートが出ない · GitHub でプルリクにラベルや担当者が付かない · GitHub でプルリクを閉じられない・開き直せない · GitHub でプッシュ保護にプッシュを止められた · GitHub でプルリクのコメントが隠された · GitHub でデプロイが成功するまでプルリクをマージできない · GitHub でチームに頼んだレビューがメンバーに置き換わった · GitHub でプルリクのファイルの Viewed が外れた · GitHub でマージしていないプルリクがマージ済みになった · GitHub で Copilot のレビューが承認に数えられない · GitHub でワークフローが作ったプルリクのチェックが動かない · GitHub でプルリクに Update branch のボタンが出ない · GitHub で Dependabot のプルリクのチェックが失敗する · GitHub でフォークからのプルリクのチェックが失敗する · GitHub でコミットメッセージの [skip ci] でチェックが動かない · GitHub で保存期間を過ぎてチェックが消えた · GitHub の公開リポジトリのコードレビューの制限 · GitHub でリポジトリのプルリクがオフ・制限されている · GitHub でスタックのプルリクごとにチェックが走る · GitHub でスカッシュでマージ済みのコミットが次のプルリクに出る · GitHub のプルリクでファイルの差分が出ない · GitHub でフォークのプルリクのブランチに push できない · GitHub のプルリクのチェックが取り消された · GitHub で Rebase and merge が使えない · GitHub のマージのコミットメッセージが思った形にならない · GitHub の API がタイムアウトした · GitHub のプルリクで画像や文書の差分が見た目で出ない · GitHub のレビューの依頼が断られる(422) · GitHub で Copilot が作ったプルリクのチェックが動かない・承認が数えられない · GitHub の push が GH006・GH013 で断られる · GitHub で承認が足りずマージできない・数に入らない承認 · JetBrains の IDE で GitHub のプルリクを扱う · English