Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在更新gitattributes后,我可以使用Git批量更改行结尾吗?_Git - Fatal编程技术网

在更新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.”(没有重置)有什么问题?我本来希望有一个更内置的解决方案,但对我来说这显然是不存在的。您提供了一个简单、直接的解决方案。