akonsu
akonsu

Reputation: 29576

how to make git not change line endings for one particular file?

due to a "feature" in Microsoft's Visual Studio, .sln files must have windows style line endings so that the windows explorer could open them in Visual studio. So I need to be able to commit this one particular file with line endings intact. It is fine if all other files get converted. The question is how to make git accept just one single file with windows endings?

Upvotes: 89

Views: 19815

Answers (2)

Daniel
Daniel

Reputation: 5389

To ensure:

  • all .sln files are always checked out with CRLF line endings
  • but everything else git decides is not a binary file is checked out with LFs

...you can set up a .gitattributes file in the root of your project,like:

# Ensure all files are checked into the repo with LF line endings and checked 
# out with LFs.
* text=auto eol=lf

# Except these files will always be checked out with CRLFs (regardless of the
# OS they were checked out on).
*.bat text eol=crlf
*.sln text eol=crlf

This example also ensures .bat files always use CRLF line endings.

Note: If you're expecting to store binary files in your repo, like images, you may also want to explicitly tell git not to mess with line endings with something like *.png binary.

Note: Older versions of git had a bug in this area, so ensure you're using 2.10 or later.

Upvotes: 5

larsks
larsks

Reputation: 312620

Take a look at the gitatttributes documentation. With recent versions of git, you can set the eol attribute for files to control what end-of-lines will be used when the file is checked out.

You should be able to create a .gitattributes file in your repository that looking something like:

path/to/my/file eol=crlf

Upvotes: 133

Related Questions