https://git-scm.com/docs/gitattributes#_eol claims that: --- Set to string value "crlf" This setting converts the file’s line endings in the working directory to CRLF when the file is checked out. Set to string value "lf" This setting uses the same line endings in the working directory as in the index when the file is checked out. --- I don't think this explanation is sufficient for files stored on Windows machines. A file might be stored with CRLF in the index. What happens then? And what happens when a file is added to the index with `core.autocrlf=input` on Windows machines?