首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何配置git / PhpStorm以忽略CRLF更改

如何配置git / PhpStorm以忽略CRLF更改
EN

Stack Overflow用户
提问于 2022-10-12 09:05:52
回答 1查看 83关注 0票数 0

我对PhpStorm和git有问题。

每次我从服务器的备份档案中添加文件时,PhpStorm都会显示所有文件已更改,即使唯一的更改是行尾而没有内容。

我注意到这一点,因为我的git被配置为使用CRLF作为签出文件,LF用于回购中的文件(这正是我想要的)。

问题现在出现了,当我添加已经有LF行中断的文件时,所有这些文件都显示为“修改”。当我对其中任何一个文件执行git add操作时,换行符都在文件系统中转换,git/PhpStorm发现这些文件与repo完全相同,并从“更改”列表中删除该文件。

但是,当我添加包含数千个文件的整个目录时,手动添加所有没有真正更改的文件是很痛苦的。我无法添加整个文件夹,因为我首先喜欢删除所有文件更改,然后查看文件内容中有哪些真正的更改。

我的当前配置是:

代码语言:javascript
运行
复制
core.autocrlf=true
core.safecrlf=false

我的问题是:

是否有一种方法可以禁用将文件显示为“已更改”的函数,即使将它们添加到git中也不会添加任何更改(但是保留Windows中的文件具有CRLF和回购LF中的文件的行为)吗?

我已经发现,通过设置"LF will be replaced by CRLF",可以在命令行git中禁用core.safecrlf=false警告。但这些文件在PhpStorm和git status中仍然显示为“已更改”。

我在命令行git中发现了一个类似的问题:Git status ignore line endings / identical files / windows & linux environment / dropbox / meld,但是没有一个解决方案对我有用。

EN

回答 1

Stack Overflow用户

发布于 2022-10-12 17:47:49

我找到了一种有用的方法,我在Git status ignore line endings使用了一个anser,我编写了一个脚本,它遍历所有文件,并为每个没有内容更改的文件触发行转换。

代码语言:javascript
运行
复制
git status | grep modified | cut -d' ' -f 4- | while read x; do

  echo -e -n "checking $x                                                                   \r"
 if [ "$(git --no-pager diff --ignore-cr-at-eol -- $x)" ]; then
    echo "modified: $x"
 else
   ## Add files to trigger auto clrf convert
   #git add $x
   # restore repo-state of this file to remove it from changes list
   git checkout HEAD -- $x
 fi
done

它比较更改的文件内容,并从“更改”列表中删除内容相同的文件。

它很好,但需要一段时间才能运行,所以我仍然对更好的答案持开放态度。我尝试了两种方法(使用git add和` `git签出)都解决了这个问题,我不知道什么是最好的方法。

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

https://stackoverflow.com/questions/74039235

复制
相关文章

相似问题

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