Should git change the ending of line? (control+M or ^M at the end of the first line)

antonjs picture antonjs · Feb 10, 2012 · Viewed 10.5k times · Source

I use git to pull my code from a windows machine.

When the other developers pull the files from the server on their liunx machine they have the ^M at the end of the first line.

How can make git to take care of this for me?

I mean, git should change the ending of line (delete control+M or ^M at the end of the first line) when I push (from my window machine) the code on the server.

Answer

nulltoken picture nulltoken · Feb 10, 2012

This GitHub help page deals with this very specific topic and drives one through the steps to correctly configure your Git configuration.

Basically, if you're working on Mac/Linux, use

$ git config --global core.autocrlf input

If you're rather a Windows guy, use

$ git config --global core.autocrlf true

Note: This will convert your line endings on the fly, while performing a checkout or a commit and ensure that your text files will have LF line endings in your repository while having native line endings in your working directory.

Note 2: This will not rewrite the history of your repository. Existing commits in the repo will keep their potentially mixed lines endings.

Note 3: Ensure that every committer executes this configuration step before their next commit.

An alternative approach, which doesn't involve compelling everyone to change their config, exists. It requires adding a specific file name .gitattributes to your repository. More information about his topic in the git official gitattributes documentation.

Note 4: Tim Clem, a githubber, published a very detailed blog post (Mind the End of Your Line) about line endings, related configuration entries and gitattributes benefits. It's an absolute must read if you're willing to get a good grasp of the concepts, the "why" and the internal machinery.