Using LF instead of CRLF on Windows
Have you ever worked on a team where people use other OS along with windows(with Git as version-control system). In such case tesing or linting will give you errors about the line endings. In this post I will walk you through some settings, which can solve these problems in your codebase.
Reason for this problem
This problem arises because of the default line endings in Windows, which is
CRLF. While the
default line endings in macOS and all linux distros will be
All the below solutions are the modifications needed to be done on Windows PC, to make it compatible with other OS.
The key to dealing with line endings is to make sure your configuration is committed to the repository, using .gitattributes. For most people, this is as simple as creating a file named .gitattributes at the root of your repository that contains these 2 lines:
*.png -text is optional, but I use it as a best practice With this set, Windows users will have
text files converted from Windows style line endings (\r\n) to Unix style line endings (\n) when
they’re added to the repository.
For most developers - in most repositories - this will resolve all the issues with line endings.
You can change your editor settings to support line endings as
LF. The procedure to set this up
vary based on your editor. In vscode it is
While installing Git, you can choose Checkout as-is/ Commit Unix-style. If you do lot of cross-platform development this will help you.
You can use prettier or beautify or any other code formatter for your project. I usually use
prettier either as extension or a dependeny. It currently supports various
files, it's worth a try. With a vscode extension, the configuration(settings.json) will be
Many tests depend on newlines being preserved as
LF. On Windows, you can ensure this by cloning
Some other git commands that might be helpfult regarding this config:
It is a good idea to keep a .gitattributes file as we don't know if everyone in our team will set their config. This file should be kept in repo's root path.
This will treat all files as text files and convert to OS's line ending on checkout and back to LF on commit automatically. If you want to set this explicitly, then use
First one is for checkout and second one is for commit.Published on . Updated on
Frequently Asked Questions
What is CRLF?
CRLF stands for Carriage Return Line Feed. It's used to note the termination of a line(EOF), however, dealt with differently in today's popular Operating Systems.
What is OS?
OS stands for Operating System. Examples of OS are Windows 10, Windows XP, Mac, Ubuntu.