[英]How do I re-checkout all files in Git to convert from CRLF to LF?
我有使用 CRLF 檢出的文件。 我改變了git config --global core.autocrlf false
。 Git 沒有看到任何修改。 當我編輯一個文件時,Git 認為整個文件都發生了變化。 如何使用 LF 而不是 CRLF 重新簽出並覆蓋所有文件,以便差異按預期工作? 我看到了這個,但答案提到了一個無效的命令。 我看到了這個,但它說“Git 想要提交您尚未修改的文件”,這是不正確的。 我試過
git pull --force
git checkout --force
但是這些文件仍然有 CRLF。 那么如何將所有文件從 CRLF 轉換為 LF? 我可以在 Notepad++ 中編輯每個文件,並使用 Edit > EOL Conversions > Unix (LF),這是我在逐個文件的基礎上所做的,但它非常乏味。 也可能有一個awk
或sed
腳本,但我不熟悉它們,我寧願只修改簽入 Git 的內容,而不是搞砸.git/
。
也試過
git reset --hard origin/master
而且文件還在CRLF 中!
這不是建議的副本的副本,因為我不想提交任何內容。 只想從 Git 獲取一個新副本。 此外,Git 沒有看到任何文件被修改。
這似乎有效,但我不確定為什么。 它看起來非常可怕,有很多變化,但最終沒有改變任何東西。 第一行后我很擔心。
git rm --cached -r .
git reset
git checkout .
無需提交。
git add --renormalize .
然后提交所有更改的文件為我做了。
根據man git add
它特別提到在core.autocrlf
更改后運行它。
--重新歸一化
對所有跟蹤的文件重新應用“清理”過程,以將它們再次強行添加到索引中。 這在更改 core.autocrlf 配置或文本屬性以更正添加了錯誤 CRLF/LF 行結尾的文件后很有用。 此選項意味着 -u。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.