Batch convert text files from LF line endings to CRLF
Question
I have a vb.net (visual studio 2010) project that is version controlled with git (1.7.10.msysgit.1). I made a mistake of leaving core.autocrlf
to true in git. Now I have set core.autocrlf
to false, but the source code is already converted to LF line endings inside the repository. I want to change the line endings back to CRLF.
My plan to correct the situation is:
- git clone
- delete all source code files in the clone
- git checkout -f
- convert all LF to CRLF
- git commit
- git pull from the original repo
I am having problem with step 4. There are a lot of files in the project and hopefully there is a tool to batch convert all text files into CRLF line endings.
I have tried dos2unix
that is available in the git bash, but looks like it will not process subfolders and it told me that the text files looks binary
.
So, what is the best way to batch convert my source code back to CRLF line endings?
Solution 2
I missed the obvious way:
- git clone to folder A. git config core.autocrlf false
- git clone to folder B. git config core.autocrlf true
- delete all source files from folder B
- git checkout -f in folder B
- cut and paste all files and folders from folder B to folder A
- git commit in folder A
- git pull from the original repository
OTHER TIPS
I took Endy's steps but reduced it to just using one single repository:
1. git config core.autocrlf true
2. delete all files in your working tree (except the .git folder for sure)
3. git checkout -f
4. git config core.autocrlf false
5. git commit -am "corrected all line endings from LF to CRLF"
Christoph's answer almost worked for us but for some reason git missed a bunch of files. (We're on version 2.20). We had to force git to rescan everything via "git read-tree --empty". After doing this, some files showed as "delete" which was incorrect, but after a reset and add that worked for us.
1. git config core.autocrlf true
2. delete all files in your working tree (except the .git folder for sure)
3. git checkout -f
4. git config core.autocrlf false
5. git read-tree --empty
6. git add .
7. git reset
8. git add .
9. git commit -m "corrected all line endings from LF to CRLF"