GitHub: a pull request shows every line of a file changed
Every time you press return you insert an invisible character called a line ending, and different operating systems handle line endings differently. When you collaborate with Git and GitHub, Git might produce unexpected results if, for example, you work on Windows and a collaborator has made a change in macOS; configuring Git to handle line endings avoids problems in your diffs (GitHub's configuring Git to handle line endings, checked October 28, 2026).
Why every line looks changed
- Other line endings: each line of a text file ends with a line ending, so a file saved with the line endings of another operating system differs on every line, though the text you see is the same.
- After a new setting: after you set
core.autocrlfor commit a.gitattributesfile, Git automatically changes line endings to match the new configuration, and Git may report changes to files that you have not modified. - Text or binary: Git automatically determines whether files in a repository are text or binary files; GitHub recommends marking binary files explicitly in
.gitattributes, so that they are not corrupted.
What the settings do
core.autocrlf: changes how Git handles line endings on your machine. On Windows, passtrue: line endings in files you check out are correct for Windows, and they are converted to Unix style when you commit. On macOS and Linux, passinput..gitattributes: a file in the root of the repository, committed like any other file, that sets how Git reads line endings for the files it matches. It overridescore.autocrlffor all contributors, whatever their Git settings.- Its settings:
text=autolets Git handle the files in whatever way it thinks is best;text eol=crlfalways converts line endings to CRLF on checkout, andtext eol=lfto LF;binarytells Git that the files are not text and not to change them, and is an alias for-text -diff.
What to do
- Set it for everyone: commit a
.gitattributesfile with, for example,* text=autoas the default, the text files that must keep CRLF or LF, and the binary files. - Renormalize the repository: first add and commit any outstanding changes, then run
git add --renormalize .to update all files on the current branch to the new configuration, check the rewritten files withgit status, and commit them, as in GitHub's steps, with a message of their own. - A diff not shown at all: for a file whose changes GitHub does not show, or whitespace hidden in the review, see file diff not shown.
In IntelliJ IDEA: line endings are set aside, with a notice when they are the only change
How the GitHub support built into IntelliJ IDEA shows a file whose line endings changed, in its source (checked October 31, 2026; IntelliJ IDEA: DiffContentFactoryImpl.java, SimpleDiffViewer.java, TextDiffViewerUtil.java, DiffNotifications.kt, DiffBundle.properties):
- Listed as changed: the file list is GitHub's, so a file GitHub reports as changed is in it (how the list and the diffs are made: a file diff is not shown).
- Compared without line endings: when the diff reads a version as text, it converts its line endings to one form and keeps the kind it found aside. A file whose only change is its line endings therefore shows no changed lines in the side-by-side diff, with the notice Contents have differences only in line separators (Contents have differences only in line separators and encoding when the encoding changed too).
GitHub pull requests in IntelliJ IDEA
Pull Request Inbox for GitHub, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, shows a pull request's reviews, checks and conversations next to the diff, and merges it with the methods the target branch allows. It lists the files GitHub reports as changed and opens each in the IDE's diff, with the file read at the merge base and at the head commit; it does not read .gitattributes, so a file whose line endings changed is listed like any other. The review inbox, diffs and conversations are free; approving, commenting, resolving and merging are Pro (US$1.50 a month, with a 30-day trial).
GitHub is a trademark of GitHub, Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with or endorsed by GitHub, Inc. or JetBrains.
More: GitHub merge refused (405, 409) · GitHub review refused (422) · GitHub search 422 "Validation Failed" · "Resource not accessible by personal access token" · 401 "Bad credentials" · "Resource protected by organization SAML enforcement" · "API rate limit exceeded" · GitHub diff 406 "too_large", 3,000 files · GitHub line comment 422 "must be part of the diff" · GitHub branch update refused (422) · GitHub pull request not created (422, 403) · GitHub auto-merge refused · GitHub draft, ready for review or close refused · GitHub conversation not resolved · GitHub checks not shown (check runs 403) · GitHub file contents not read · GitHub compare refused (404, 422) · GitHub comment or reply refused (403 locked, archived) · GitHub merge method not allowed (405) · GitHub branch not found (404, 301) · GitHub Enterprise Server not reached · GitHub review request not shown · GitHub pull request list incomplete · GitHub 404 Not Found, renamed repositories (301, 307) · GitHub line comment outdated or not on the diff · GitHub pull requests not updating, notifications late · GitHub suggested change cannot be applied · GitHub required check stuck at "Expected" · GitHub code owner review required · GitHub merge blocked by unresolved conversations · GitHub merge blocked by unsigned commits · GitHub branch that merges through a merge queue · GitHub merge waiting for an approval of the most recent push · GitHub merge waiting for code scanning results · GitHub merge waiting for code quality results · GitHub merge blocked by a code coverage threshold · GitHub merge blocked by license compliance results · GitHub branch locked or its updates restricted · GitHub branch not deleted after merging · GitHub merge waiting for a team's approval (Required reviewers) · GitHub merge blocked by secret scanning alerts · GitHub stacked pull request not merging · GitHub push blocked by push rules · GitHub merge blocked by commit metadata rules · GitHub force push blocked · GitHub issue not closed by a merged pull request · GitHub pull request not checked out locally · GitHub pull request has merge conflicts · GitHub changes requested and dismissing a review · GitHub co-author not credited for a commit · GitHub dependency review check failed · GitHub Dependabot not rebasing its pull request · GitHub fork not syncing with upstream · GitHub pull request base branch not changing · GitHub pull request not reverting · GitHub pull request template not showing · GitHub pull request labels or assignees not added · GitHub pull request not closing or reopening · GitHub push blocked by push protection · GitHub pull request comment hidden · GitHub pull request blocked until deployments succeed · GitHub team review request replaced by members · GitHub pull request file no longer marked Viewed · GitHub pull request marked merged without being merged · GitHub Copilot review does not count as an approval · GitHub checks not running on a pull request a workflow created · GitHub Update branch button not shown on a pull request · GitHub checks failing on a Dependabot pull request · GitHub checks failing on a pull request from a fork · GitHub checks skipped by [skip ci] in a commit message · GitHub checks gone after the retention period · GitHub code review limits in a public repository · GitHub pull requests turned off or limited in a repository · GitHub checks run on every pull request in a stack · GitHub pull request showing commits already squash merged · GitHub pull request not showing a file diff · GitHub push to a pull request branch from a fork refused · GitHub check cancelled on a pull request · GitHub Rebase and merge not available · GitHub merge commit message not what you expected · GitHub API request timed out · GitHub pull request image or document diff not shown · GitHub review request refused (422) · GitHub pull request from Copilot: checks not running, approval not counted · GitHub push refused: GH006 and GH013 on a protected branch · GitHub "At least 1 approving review is required", approvals that do not count · GitHub pull request plugins for IntelliJ IDEA, compared · 日本語