Android Studio 拉取代码后 git显示大量文件被修改

  • Post author:
  • Post category:其他


参考:


在 Git 中正确设置 CRLF、LF 换行符转换


现象

拉取后再Android Studio 中显示正常,但是 run 之后,所有的文件在git 中显示 modify。

查看具体变更发现是所有的内容先显示删除 – ,在显示添加 +

Beyond Compare 文本比较显示完全一致,十六进制比较发现问题。

原因

我使用 windows 而我的朋友使用的是 macOS 。

windows中默认换行用的CRLF(回车+换行),而linux环境下默认用的LF(换行),于是所有文件都被标注被更改。

打开文件时,显示 LF 。当我 run 工程之后所有的文件都变成了 CELF

解决

在 C:\Users\用户\.gitconfig 文件中,添加以下内容:

[core]

autocrlf = true

filemode = false

safecrlf = true

core.autocrlf

git config --global core.autocrlf  [true | input | false]  # 全局设置
git config --local core.autocrlf  [true | input | false] # 针对本项目设置

  • true

    提交时转换为LF,检出时转换为CRLF

  • input

    提交时转换为LF,检出时不转换

  • false

    提交与检出的代码都保持文件原有的换行符不变(不转换)

CRLF 与 LF 混合的文本文件不受此配置控制。

Git 安装后默认为 false

core.safecrlf

由于没有一个绝对有效的算法来判断一个文件是否为文本,所以 Git 提供了一项禁止 / 警告不可逆转换的配置来防止错误的标准化与转换。它主要是影响到多种换行符混合的文件,我们可以手动将其转换为同一种换行符:

git config --global core.safecrlf [true | false | warn]

  • true

    禁止提交混合换行符的文本文件(git add 的时候会被拦截,提示异常)

  • warn

    提交混合换行符的文本文件的时候发出警告,但是不会阻止 git add 操作

  • false

    不禁止提交混合换行符的文本文件(默认配置)



版权声明:本文为vistaup原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。