Files
Knowledge/1 使用/软件使用/软件使用+bae4a8e0-54fb-439b-86f6-546350dbc6a2/git+4dd326d3-d712-41d7-b801-6a3f731fcfbb/git+乱改你的换行符?+48a660a5-f048-4cfc-8fe9-3799fc47f091.md
T

1.3 KiB

%USERPROFILE%\.gitconfig
[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。