如何用git找到crlf行分隔符?

时间:2014-07-07 05:37:22

标签: git intellij-idea

因为我想使用intellij提交git,我收到一条消息

You are about to commit CRLF line separators to the Git repository

我有两个选择:

  • 修复并提交(运行git config --global core.autocrlf
  • 按原样提交

在我做其他事情之前,我想看看这些行分隔符的位置。

我怎么能用git或intellij做到这一点? (仅使用git的溶液是优选的)。

2 个答案:

答案 0 :(得分:17)

您可以通过命令行使用git grep来搜索包含Windows样式换行符的文件。

使用git bash,您可以通过以下命令找到包含\r字符的所有文件(仅限bash!):

git grep -Il $'\r'

或者替代地(这应该适用于所有shell类型 - 除了windows类型):

git grep -Il '<CTRL + M>'

这实际上会在shell中显示为换行符,但只要将其换成引号就行了。

最后是Windows CLI(使用CMD和PowerShell测试):

git grep -Il "\r"

已使用的选项

  • -I从匹配项中排除二进制文件
  • -l仅显示包含匹配项的文件名,而不是所有匹配项

此外,如果您想限制搜索多个文件,可以使用--cached选项,该选项只会搜索索引中的文件。

您可以阅读documentation了解详情。

答案 1 :(得分:0)

我刚刚做到了:

-修复并提交(运行 git config --global core.autocrlf)

在源代码文件中有两种表示行结尾的方法。

  • CRLF(回车+换行);
  • 或者只是 LF(换行)。

Git/编程标准通常更喜欢 LF。

单击 Fix and Commit 会将 Git 配置为始终在提交之前自动将行尾转换为 LF。

但是,我建议使用@Sascha Wolf 的答案,并尝试确定您的目标文件是否应该更改或保持原样。