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

5
我有一个vb.net(visual studio 2010)项目,使用git(1.7.10.msysgit.1)进行版本控制。我犯了一个错误,将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
我在第四步遇到问题。该项目中有很多文件,希望有一种工具可以批量将所有文本文件转换为CRLF行结束符。
我尝试过在git bash中可用的dos2unix,但似乎它不会处理子文件夹,并告诉我文本文件looks binary
那么,批量将我的源代码转换为CRLF行结束符的最佳方法是什么?
3个回答

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"

2
不错!但是如果你忽略/未跟踪文件要小心。 - Endy Tjahjono

2

我错过了一个显而易见的方法:

  1. 将git克隆到文件夹A,然后设置git配置core.autocrlf为false
  2. 将git克隆到文件夹B,然后设置git配置core.autocrlf为true
  3. 从文件夹B中删除所有源文件
  4. 在文件夹B中执行git checkout -f
  5. 将文件和文件夹从文件夹B剪切并粘贴到文件夹A中
  6. 在文件夹A中执行git commit
  7. 从原始仓库中执行git pull

2

Christoph的答案对我们来说几乎是可行的,但由于某种原因,git错过了许多文件。(我们使用的是2.20版本)我们不得不通过“git read-tree --empty”强制git重新扫描所有内容。这样做后,一些文件显示为“删除”,这是不正确的,但经过重置和添加后,这对我们有用。

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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接