```Plain Text %USERPROFILE%\.gitconfig ``` ```Plain Text [core] autocrlf = true ``` 有三个可选值: - true - false - input 在 Windows 系统上: - `true` 表示在推送时转成 `\n`,在拉取时转成 `\r\n`。这样的设置让 Windows 的开发者能兼容很多的开发工具(比如早期的记事本,新的已经支持 `\r\n` 了),不至于遇到很多换行符问题。 - `false` 表示在推送时和拉取时都原样保留换行符。这样的设置在所有程序员都在同一个平台开发时很有用,git 完全不处理换行符,全部改由开发者自行解决。 - `input` 表示在推送时转成 `\n`,在拉取时原样保留换行符。注意到,这样的设置会让仓库里所有的换行符都变成 `\n` 不再有什么时候有 `\r\n` 了,所以对 Windows 平台的开发者并不友好。 以前的服务器全局配置没有问题,是因为服务器配置为 `true`,于是拉下来时一定都是 `\r\n` 哈希正确。而现在全局配置是 `false`,于是会原样把 git 仓库里的拉下来,哈希错误。 是的,你没看错!远程 git 仓库里的是错的!这是因为有小伙伴使用了 `true` 或者 `input` 的配置,导致推送时统一把换行符改成了 `\r\n`。