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

Git 将文本文件从LF行尾批量转换为CRLF,git,dos2unix,Git,Dos2unix,我有一个vb.net(VisualStudio2010)项目,它的版本由git(1.7.10.msysgit.1)控制。我犯了一个错误,在git中将core.autocrlf保留为true。现在我已经将core.autocrlf设置为false,但是源代码已经在存储库中转换为LF行结尾。我想把行尾改回CRLF 我纠正这种情况的计划是: git克隆 删除克隆中的所有源代码文件 git签出-f 将所有LF转换为CRLF git提交 git从原始回购中提取 我对步骤4有问题。项目中有很多文件,希望有一

我有一个vb.net(VisualStudio2010)项目,它的版本由git(1.7.10.msysgit.1)控制。我犯了一个错误,在git中将
core.autocrlf
保留为true。现在我已经将
core.autocrlf
设置为false,但是源代码已经在存储库中转换为LF行结尾。我想把行尾改回CRLF

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

  • git克隆
  • 删除克隆中的所有源代码文件
  • git签出-f
  • 将所有LF转换为CRLF
  • git提交
  • git从原始回购中提取
  • 我对步骤4有问题。项目中有很多文件,希望有一个工具可以将所有文本文件批量转换为CRLF行尾

    我尝试过git bash中提供的
    dos2unix
    ,但它似乎不会处理子文件夹,它告诉我文本文件
    看起来是二进制的


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

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

  • git克隆到文件夹A.git config core.autocrlf false
  • git克隆到文件夹B.git config core.autocrlf true
  • 从文件夹B中删除所有源文件
  • git签出-文件夹B中的f
  • 将文件夹B中的所有文件和文件夹剪切并粘贴到文件夹A
  • git提交到文件夹A中
  • git从原始存储库中提取

  • 我采用了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.20版)。我们不得不强迫git通过“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"
    

    美好的但是,如果忽略/未跟踪文件,请小心。