提问人:89barde 提问时间:12/28/2022 最后编辑:torek89barde 更新时间:12/29/2022 访问量:130
git :什么都没有改变,但将每一行标记为“已更改”
git : nothing changed but mark every line "changed"
问:
IDE:Eclipse和VS代码 Git 工具:源代码树、VS 代码 操作:我的代码中没有任何更改。但是当按 ctrl+s 时,它能够保存并且 suorceTree 将显示每一行都已编辑。我发现的唯一变化(由sourceTree显示):
形式:import org.apache.poi.ss.usermodel.Cell;␍import org.apache.poi.ss.usermodel.CellType;
对此:import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType;
我很确定我没有使用任何“保存时格式化代码”设置,这是这个版本中的 git 错误吗?
尝试:在 VS 代码、Eclipse、写字板中按 Ctrl + S 除了 :编辑一行(保存时不更改 WHOLD 文件)并推送到 git 分支。
答:
默认情况下,Git 使用 LF (Linux) 行尾,而 Windows 则推送 CRLF 行尾。
Git 尝试假设如果您使用的是 Windows,您需要 CRLF,这对普通用户有好处,因为程序通常预先配置为使用 CRLF。
如果您使用的是 Windows 并且收到错误的更改报告,则 Git 可能会忽略行尾,因此当您克隆或拉取代码时,它将以 LF 格式显示。然后,当您将进度保存在 CRLF 配置的编辑器中时,每行结尾都会更改回 CRLF,从而修改整个文件。
在 Windows 安装 Git 期间,此行为可能会更改,下次安装 Git 时请密切注意。
解决方案 1:配置 Git
您可以将 Git 配置为在签出时将 LF 替换为 CRLF(克隆、拉取等),以便您可以在 CRLF 中工作,然后在提交时将 CRLF 替换回 LF,这样您就不会提交整个几乎没有更改的文件。您想要的选项是 ,您可以在终端中执行此操作:core.autocrlf
git config --global core.autocrlf true
--global 参数为整个用户进行此更改(您可能希望这样做)
解决方案 2:开始使用 LF
您可以将文本编辑器和 IDE 配置为默认使用 LF,这样,当您克隆或拉入 LF 时,您将继续使用 LF 工作并保存您的工作,同时保留 Git 的默认行尾。
您通常可以找到此选项,称为 EOL(行尾)。
评论
core.autocrlf