git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: noob user, want checkins to all be forced to LF terminated lines

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Jul 31, 2010, 04:49 UTC
Message-ID
<20100731044957.GA8920@burratino>
In-Reply-To
<i308gl$v6p$1@dough.gmane.org>
Walter Bright wrote:
> I've just started with git.
I thought I saw you here years ago. :)
> Exactly what do I put in $HOME/.gitconfig ?
Well, naturally it depends on what you want to happen.

If you just want to make sure any new files you commit are tracked with simple LF line endings, you can use

	[core]
		autocrlf = input

With this setting, Git will not do any munging to files in the work tree in any way (unless there is a .gitattributes file requesting to do so).

That is an _altruistic_ setting to use. It ensures you do not pollute history with some alternative line-ending, but your own work tree may not necessarily match the cleaned up versions you are checking in; so if you try to "git add" and then "touch" a file with CRLF line endings with this setting enabled, you may be surprised at the result! (Though a simple "git checkout file.c" afterwards should fix up the line endings in the work tree.)

If you want to make sure text files in the work tree use LF line endings and you are using a recent version of Git, use the above setting or

	[core]
		eol = lf

On Unix-y systems, you do not have to do that, since it is the default. On Windows, the "[core] autocrlf" setting is set up by default in /etc/gitconfig so you would probably want to override that with

	[core]
		autocrlf = false
if you are not setting it to input.

Which files are text files? you may ask. By default (unless autocrlf is enabled), Git treats files as raw data; to get it to futz with line endings, you have to declare your text files in a file named .gitattributes in the tracked tree.

	* crlf
	*.jpg -crlf
	*.png -crlf

The keyword crlf here means “apply line-ending conversions” and nothing more. In particular, it does not represent the preferred line ending.

If everyone for which you want these setting to take effect uses a recent version of git, you can write “text” instead of “crlf” if you prefer.

Hope that helps, Jonathan

Previous: Walter BrightNext: Walter Bright
Message 2 of 16 in “noob user, want checkins to all be forced to LF terminated lines”
  1. Walter BrightJul 31, 2010
  2. Jonathan NiederJul 31, 2010
  3. Walter BrightJul 31, 2010
  4. Ilari LiusvaaraJul 31, 2010
  5. Walter BrightJul 31, 2010
  6. Ilari LiusvaaraJul 31, 2010
  7. Walter BrightJul 31, 2010
  8. David AguilarJul 31, 2010
  9. Jonathan NiederJul 31, 2010
  10. Walter BrightJul 31, 2010
  11. Ilari LiusvaaraJul 31, 2010
  12. Jonathan NiederJul 31, 2010
  13. Walter BrightJul 31, 2010
  14. Jay SoffianAug 3, 2010
  15. Will PalmerAug 4, 2010
  16. Miles BaderJul 31, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.