I've read a lot of different questions and answers on Stack Overflow as well as git documentation on how the core.autocrlf setting works.
This is my understanding from what I've read:
Unix and Mac clients use LF line endings.
Windows clients use CRLF line endings.
When core.autocrlf is set to true on the client, the git repository always stores files in LF line ending format and line endings in files on the client are converted back and forth on check out / commit for clients (i.e. Windows) that use non-LF line endings, no matter what format the line endings files are on the client.
Here is a matrix that tries to document the same for the 'input' and 'false' settings of core.autocrlf with question marks where I'm not sure of line ending conversion behavior.
My questions are:
- What should the question marks be?
- Is this matrix correct for the "non-question marks"?
I'll update the question marks from the answers as consensus appears to be formed.
core.autocrlf value true input false ---------------------------------------------------------- commit | convert ? ? new | to LF (no conversion?) (no conversion?) commit | convert to ? no existing | LF (convert to client?) conversion checkout | convert to ? no existing | client (convert to client?) conversion
I'm not really looking for opinions on the pros and cons of the various settings. I'm just looking for data which makes it clear how to expect git to operate with each of the three settings.