Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dealing with EOL characters in Cygwin Git and Git for Windows accessing the same repository

My autocrlf is equal to true. In my cygwin-shell git status gives me a correct list of all my changes.

In Git Bash git status says I modified all files in the project. I also see this in Git GUI and the Changes-tab in IntelliJ.

How is this possible, and more importantly, how can I fix it?

like image 597
Arthur C Avatar asked Oct 16 '14 14:10

Arthur C


People also ask

How do I stop Git from changing line endings?

Go to the config file in this directory: C:\ProgramData\Git\config. Open up the config file in Notepad++ (or whatever text editor you prefer) Change "autocrlf=" to false.

Does Git for Windows use Cygwin?

Coincidentally enough, Git comes with the Cygwin net release. You can use the gitweb interface.

How should Git treat line endings?

This is a good default option. text eol=crlf Git will always convert line endings to CRLF on checkout. You should use this for files that must keep CRLF endings, even on OSX or Linux. text eol=lf Git will always convert line endings to LF on checkout.

Should I use CRLF or LF?

Whereas Windows follows the original convention of a carriage return plus a line feed ( CRLF ) for line endings, operating systems like Linux and Mac use only the line feed ( LF ) character. The history of these two control characters dates back to the era of the typewriter.


1 Answers

Cygwin Git "sees the world" as if it runs on a POSIX platform—thanks to the emulation provided by Cygwin. Contrary to this, Git for Windows is a native Windows program which does not use any emulation and tries to be as close to Windows standards (however idiotic) as possible. What this leads to is that for Cygwin Git, LF is the standard EOL character, while for Git for Windows, the native EOL sequence is CRLF. So both tools see the world differently, and that explains what you observe. Please read this recent thread for more info (and especially this message).

In either case, consider setting core.autocrlf to false anyway to avoid headaches bound to this "magic". I'm using GfW solely, and in the end switched that setting to false (it defaults to true) for good.

You might also find the extremely well commented .gitattributes file from the Mono project to be interesting to study.

like image 148
kostix Avatar answered Sep 29 '22 12:09

kostix