Last Updated: February 25, 2016
·
3.365K
· carleeto

Changing line endings on Windows using Powershell and Git

If you ever have had to work with a code base where files contain lines with inconsistent line endings

and

You would like to make sure that at least the files you have touched no longer have that problem

and

You use Powershell and MSysGit on Windows, you can use this:

To convert LF to CRLF:

git diff --cached --name-only | foreach { dos2unix -D $_ }

This is basically telling git to list the files that have been staged and iterate over them to change their line endings

That's a fair amount of typing, so I've aliased the git command

git config --global alias.stgd 'diff --cached --name-only'

And the command now becomes:

git stgd | foreach { dos2unix -D $_}

Much nicer. However, the files are still not staged. Let's take care of that:

git stgd | foreach { dos2unix -D $_; git add $_}

And that will make sure any staged files you've worked on have proper line endings on Windows :)

NOTE: I'm using dos2unix here and not TYPE unix_file | FIND "" /V > dos_file as suggested by wikipedia because find works differently in powershell.