在更新gitattributes后,我可以使用Git批量更改行结尾吗?
以前,我的在更新gitattributes后,我可以使用Git批量更改行结尾吗?,git,Git,以前,我的.gittributes设置如下: * text=auto 在Windows上,不幸的是,这导致我的*.sh文件以CRLF行结尾签出。要更正此问题,我的.gittributes现在看起来像: * text=auto *.sh eol=lf 我在Windows10上使用的是Git版本2.24 是否有一种机制,可以让所有与.gittributes“重新签出”中的新规则相匹配的文件(无论是整个本地repo还是其中的特定目录)都可以“重新签出”,以便行结束符(在本例中)对于从CRLF转换为
.gittributes
设置如下:
* text=auto
在Windows上,不幸的是,这导致我的*.sh
文件以CRLF行结尾签出。要更正此问题,我的.gittributes
现在看起来像:
* text=auto
*.sh eol=lf
我在Windows10上使用的是Git版本2.24
是否有一种机制,可以让所有与
.gittributes
“重新签出”中的新规则相匹配的文件(无论是整个本地repo还是其中的特定目录)都可以“重新签出”,以便行结束符(在本例中)对于从CRLF转换为LF的*.sh
文件,您可以删除它们,然后运行git checkout--blah.sh
将其取回。不幸的是,链接的答案对我@phd没有帮助。这在文章中很难说,但我相信他们指的是在存储库中固定行尾,而不是工作目录中的行尾add--renormalize
将修复存储库中的行尾,而不是工作副本中签出的文件。值得明确说明的是:*.sh
文件在repo中已经有LF行尾,因为规则是*text=auto
。但是,在Windows上,所有文件都签出到CRLF行结尾,除非指定了某些配置设置,或者您通过.gittributes
中的EOL=lf
显式设置其EOL。就我的问题而言,假设没有指定任何相关的Git配置设置。我只专注于.gittributes
@phd,就像我说的,那是行不通的。我试过了只是为了确定。这些说明用于转换存储库中文件的行尾,而不是工作副本中签出的文件的行尾。因此,git reset--hard&&git add--renormalize。
在这里不起作用。根据renormalize的说法,renormalize就是为了这个。还很好地解释了renormalize如何在元数据级别上起作用。所以简而言之,“git add--renormalize.”(没有重置)有什么问题?我本来希望有一个更内置的解决方案,但对我来说这显然是不存在的。您提供了一个简单、直接的解决方案。