情况描述
脚本 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
- 设置