LF will be replaced by CRLF in git - What is that and is it important?

Git

Git Problem Overview


When I create a new rails application I'm seeing a warning in git about LF replacement. I do git init git add .

and then boom! I see this pop up for almost all files. I usually just keep going and build my application and it disappears after many changes to files.

Example:

> The file will have its original line endings in your working directory. warning: LF will be replaced by CRLF in Gemfile.

> The file will have its original line endings in your working directory. warning: LF will be replaced by CRLF in Gemfile.lock.

> The file will have its original line endings in your working directory. warning: LF will be replaced by CRLF in README.

What's the difference between LF and CRLF?

Should I be concerned about this in the long run or just ignore it and keep going as I usually do?

Git Solutions


Solution 1 - Git

In Unix systems the end of a line is represented with a line feed (LF). In windows a line is represented with a carriage return (CR) and a line feed (LF) thus (CRLF). when you get code from git that was uploaded from a unix system they will only have an LF.

If you are a single developer working on a windows machine, and you don't care that git automatically replaces LFs to CRLFs, you can turn this warning off by typing the following in the git command line

git config core.autocrlf true

If you want to make an intelligent decision how git should handle this, read the documentation

Here is a snippet

> Formatting and Whitespace > > Formatting and whitespace issues are some of the more frustrating and > subtle problems that many developers encounter when collaborating, > especially cross-platform. It’s very easy for patches or other > collaborated work to introduce subtle whitespace changes because > editors silently introduce them, and if your files ever touch a > Windows system, their line endings might be replaced. Git has a few > configuration options to help with these issues. > > core.autocrlf > > If you’re programming on Windows and working with people who are not > (or vice-versa), you’ll probably run into line-ending issues at some > point. This is because Windows uses both a carriage-return character > and a linefeed character for newlines in its files, whereas Mac and > Linux systems use only the linefeed character. This is a subtle but > incredibly annoying fact of cross-platform work; many editors on > Windows silently replace existing LF-style line endings with CRLF, or > insert both line-ending characters when the user hits the enter key. > > Git can handle this by auto-converting CRLF line endings into LF when > you add a file to the index, and vice versa when it checks out code > onto your filesystem. You can turn on this functionality with the > core.autocrlf setting. If you’re on a Windows machine, set it to true > – this converts LF endings into CRLF when you check out code: > > $ git config --global core.autocrlf true > > If you’re on a Linux or Mac system that uses LF line endings, then you > don’t want Git to automatically convert them when you check out files; > however, if a file with CRLF endings accidentally gets introduced, > then you may want Git to fix it. You can tell Git to convert CRLF to > LF on commit but not the other way around by setting core.autocrlf to > input: > > $ git config --global core.autocrlf input > > This setup should leave you with CRLF endings in Windows checkouts, > but LF endings on Mac and Linux systems and in the repository. > > If you’re a Windows programmer doing a Windows-only project, then you > can turn off this functionality, recording the carriage returns in the > repository by setting the config value to false: > > $ git config --global core.autocrlf false

Solution 2 - Git

If you want, you can deactivate this feature in your git core config using

git config core.autocrlf false

But it would be better to just get rid of the warnings using

git config core.autocrlf true

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLearningRoRView Question on Stackoverflow
Solution 1 - GitShrage SmilowitzView Answer on Stackoverflow
Solution 2 - GitSG 86View Answer on Stackoverflow