情况描述
脚本 A 在 Linux 下以 LF
格式提交。
在 Windows 下,出现了脚本 A 是CRLF
的情况。
当改成LF
后, 先 git stash,再 git stash pop ,该脚本又变回 CRLF
。
问题解决方法
git config --global core.autocrlf false
详细解释:core.autocrlf
的作用
这个配置控制 Git 在工作区(本地文件夹)与 Git 仓库(.git 中的对象)之间换行符的自动转换策略。
core.autocrlf
有三个值:
值 | 含义 | 常用于哪系统 |
---|---|---|
false |
关闭自动换行符转换。保留你文件实际的换行符(LF或CRLF),Git 不做任何更改。 | 跨平台/你想完全控制换行符时 |
true |
Git 会在提交(add)时把 CRLF → LF,在检出(checkout)时把 LF → CRLF。 | Windows(默认) |
input |
Git 在提交时把 CRLF → LF,在检出时不改(保留 LF)。 | Linux / macOS 开发者经常用 |
最佳实践(跨平台或统一 LF)
如果团队是跨平台或只想统一使用 LF(比如脚本、源代码),可以考虑:
-
设置:
git config --global core.autocrlf false
-
配置
.gitattributes
(推荐!)# 强制这些类型用 LF 结尾 *.sh text eol=lf *.py text eol=lf *.js text eol=lf *.txt text eol=lf
-
本地编辑器设置(例如 VSCode):
- 设置
"files.eol": "\n"
保持 LF
- 设置