首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Git状态忽略更改的行尾

Git状态忽略更改的行尾
EN

Stack Overflow用户
提问于 2020-04-16 21:13:11
回答 2查看 348关注 0票数 0

我在和git做斗争,却忽略了台词的结尾。这个问题已经被问过无数次了,但我仍然无法为我的用例找到答案。几乎羞于问..。开始吧。

背景信息:我使用PhpStorm IDE来完成大部分git操作。底层PhpStorm依赖于git来执行实际操作。

我面临的问题是,在PhpStorm中,我有一个在现有文件中插入/更新PhpDoc注释的助手脚本。这个脚本使用LF作为行尾(不可配置),我的IDE默认使用CRLF,因为我在Windows上。我知道我可以设置我的IDE使用LF,并将整个项目转换为LF。但这似乎是最后的解决办法。

因此,在脚本更新了PhpDoc并用LF替换了CRLF之后,在运行git status时列出了这些文件,我不想这样做。Git应该忽略(部分)有不同行尾的文件。我希望git status忽略这一点的原因是,PhpStorm似乎依赖于此来检测已更改的文件,并在默认情况下检查这些文件是否提交。手动逐个查看这些文件以查看PhpStorm告诉我“这些文件是相同的”(除了行尾),这是非常耗时的。

我尝试过本指南,尝试过core.autocrlf设置的各种变体,我尝试了几十种解决方案,但我仍然没有找到解决方案。

尝试所有这些解决方案确实教会了我一些关于git的事情,所以如果理解git,那么在这种情况下,core.autocrlf=true设置是无关紧要的,因为这会在提交时将CRLF转换为LF,但我的目标是将它们排除在git status之外。我一直在使用git diff --ignore-cr-at-eol,这不再显示差异,但git状态仍然存在。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-16 21:41:43

我很抱歉地告诉你,但是你想让git做的事情与git的意义和它的工作原理背道而驰。Git将字节级别上的任何更改视为更改,您不能覆盖此更改。这是没有意义的。git diff允许您这样做只是为了方便,以便在查看差异时,您可以关注相关的更改(例如,许多diff工具都设置了忽略空格更改的设置)。

我使用Webstorm,它支持.editorconfig,它本身支持不同文件的不同配置。我没有时间测试JetBrain的.editorconfig支持是否会尊重每个文件的设置,但这可能是最好的选择。

其他替代办法

  • 编写一个从脚本中删除CRs的脚本。您可以配置一个git钩,以便在提交时自动运行它。一旦您这样做,我相信JetBrains IDE中的复选框将显示为在提交对话框中
  • 使用JetBrains提交一个问题,我知道很多编辑器都有“自动检测现有文件的行尾”选项。
票数 2
EN

Stack Overflow用户

发布于 2020-04-16 21:33:44

我知道我可以设置我的IDE使用LF,并将整个项目转换为LF。但这似乎是最后的解决办法。

这确实是最好的解决办法。原因是,正如您所指出的,每次您必须处理它时,您都需要重新检查文档并仔细阅读。有core.autocrlfcore.eol,然后是每个文件的.gitattributes。我认为即使有了这么多的灵活性,也可能有一些用例还没有涵盖。在我看来,处理线的结尾是不值得的时间。

因此,我总是建议做一个扫描,以清洁回购到任何你喜欢的结局,并完成它。如果您由于与许多人共享回购而无法立即执行此操作,则实现一个钩子以检查新提交是否具有正确的样式,甚至自动执行清理。然后等待一段时间,直到所有常见的部分完成,最后执行最后的扫描。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61260129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档