git: How do I get rid of "warning: CRLF will be replaced by LF" without disabling safecrlf?

Git

Git Problem Overview


I'm new to git, and I've read a lot about line endings and how git treats them. I'm on Windows by the way. I have made a .gitattributes file and set for example *.txt to text. When I commit a .txt file, I get the warning:

> warning: CRLF will be replaced by LF in whatever.txt

But I know that. I don't need that warning. Replacing line endings in text files is what I want.

Now, setting safecrlf to false makes the warning disappear, but the manual for safecrlf reads:

> If true, makes git check if converting CRLF is reversible > when end-of-line conversion is active. Git will verify if > a command modifies a file in the work tree either directly > or indirectly. For example, committing a file followed by > checking out the same file should yield the original file > in the work tree. If this is not the case for the current > setting of core.autocrlf, git will reject the file.

From that, safecrlf seems like a good idea to have. However, I don't understand why setting safecrlf to true gives me warnings about my text files; it seems to me that those are different issues -- the warning on text files and the checking if reversible. Indeed, git does not reject my file.

Can I get rid of the warnings for text files, and still have safecrlf set? Or am I misunderstanding something?

Git Solutions


Solution 1 - Git

As far as I can tell, setting core.safecrlf to false is the only way to turn off that warning.

safecrlf is generally not necessary if your attributes are set correctly. The point of safecrlf is to prevent normalization in a file that is supposed to have mixed (or non-LF) line endings in the repository. It's really only useful in combination with core.autocrlf (to make sure that its automatic guesses can't destroy anything), and if you're setting your own attributes via .gitattributes it should be okay to turn all that off.

Solution 2 - Git

In your .gitattributes you can:

# normalize text files to use lf
text eol=lf

# except these which we want crlf
*.txt eol=crlf

Solution 3 - Git

The short answer to your question is NO.

Because, basically, core.safecrlf setting controls "warning level":

  • false - proceed without warning
  • warn - proceed with warning
  • true - don't proceed

So, you have to choose option that suits you the most.

Solution 4 - Git

use

$ git config core.autocrlf false

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
QuestionoskarkvView Question on Stackoverflow
Solution 1 - GitJan KrügerView Answer on Stackoverflow
Solution 2 - GitIan MarianoView Answer on Stackoverflow
Solution 3 - Gito.vView Answer on Stackoverflow
Solution 4 - GitJuca DuarteView Answer on Stackoverflow