将文本文件从LF行结尾批量转换为CRLF

时间:2012-05-09 11:01:18

标签: git dos2unix

我有一个vb.net(visual studio 2010)项目,使用git(1.7.10.msysgit.1)进行版本控制。我在git中将core.autocrlf置为true是错误的。现在我将core.autocrlf设置为false,但源代码已经转换为存储库内的LF行结尾。我想将行结尾更改回CRLF。

我纠正这种情况的计划是:

  1. git clone
  2. 删除克隆中的所有源代码文件
  3. git checkout -f
  4. 将所有LF转换为CRLF
  5. git commit
  6. git pull from the original repo
  7. 我遇到了第4步的问题。项目中有很多文件,希望有一个工具可以将所有文本文件批量转换为CRLF行结尾。

    我已经尝试了git bash中提供的dos2unix,但看起来它不会处理子文件夹,它告诉我文本文件looks binary

    那么,将源代码批量转换回CRLF行结尾的最佳方法是什么?

3 个答案:

答案 0 :(得分:8)

我采用了Endy的步骤,但将其缩减为仅使用一个存储库:

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"

答案 1 :(得分:2)

我错过了显而易见的方式:

  1. git clone to文件夹A. git config core.autocrlf false
  2. git clone to文件夹B. git config core.autocrlf true
  3. 删除文件夹B中的所有源文件
  4. git checkout -f在文件夹B中
  5. 将文件夹B中的所有文件和文件夹剪切并粘贴到文件夹A
  6. 文件夹A中的git commit
  7. git pull from the original repository

答案 2 :(得分:2)

Christoph的答案几乎对我们有用,但是由于某些原因git错过了一堆文件。 (我们使用的是2.20版)。我们必须强制git通过“ git read-tree --empty”重新扫描所有内容。完成此操作后,某些文件显示为“删除”,这是不正确的,但是在重置并添加后,对我们有用。

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"