我知道有很多问题/答案与此类似,但是我找不到这个问题的具体答案。我们是一个.net商店,正在使用git。
我想在执行git状态时忽略对文件的CRLF(^ M)更改。在开发过程中,其他进程偶尔会修改文件并注入CRLF,最终导致它们在git状态完成时显示为已修改。我在.gitattributes文件中有“* text = auto”行,以便在checkout / commit处规范化行结尾,但这不是我要找的。我还尝试将以下内容添加到git配置(core.whitespace = cr-at-eol),但它们仍显示为已修改。
如何告诉git忽略对CRLF的所有更改(^ M)?
答案 0 :(得分:3)
您无法忽略git status
的文件更改类型。您可以使用 .gitignore 来忽略整个文件。您可以使用各种空白选项来转换提交的内容,突出显示的内容(红色)或在diff和commit视图中显示的内容。
您无法忽略这些文件更改的原因是:
简而言之,您可能需要修复其他流程或开发清理后处理。或者你可以使用:
git diff-files --name-status --ignore-space-at-eol
这不是状态的完美类似,但它可能足以满足您的需求。为方便起见,您甚至可以通过添加 .gitconfig 来构建git-alias
'd“statusx”命令:
[alias]
statusx = diff-files --name-status --ignore-space-at-eol
如果证明不合适,还有一些额外的空白选项:--ignore-space-change
和--ignore-all-space
。有关详细信息,请参阅git diff --help
。
答案 1 :(得分:1)
您可以尝试测试-crlf
文件中的.gitattributes
属性:
*.cs -crlf
.gitattributes
man page也提到-text
,但这会使您的源文件成为二进制(无差异)。
否则,core.eol
are directives用于控制eol风格
它更精确than core.autocrlf
,即presented here。