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
git显示文件内容,并在文件末尾显示LF或CRLF_Git - Fatal编程技术网

git显示文件内容,并在文件末尾显示LF或CRLF

git显示文件内容,并在文件末尾显示LF或CRLF,git,Git,我使用命令 git show sha1:/path/file>/c/tmp/file 当我用notepad++打开存储库中的文件时,我可以看到该文件是DOS格式的 当我打开文件/c/tmp/file时,无论我的core.autocrlf配置是什么,该文件都是Unix格式的 对于“git show”命令,如何使用正确的autocrlf检索文件?测试(使用git 2.24.0)显示: git cat-file --filters HEAD:path/file 将对对象的内容应用CRLF过滤器(可能

我使用命令

git show sha1:/path/file>/c/tmp/file

当我用notepad++打开存储库中的文件时,我可以看到该文件是DOS格式的

当我打开文件/c/tmp/file时,无论我的core.autocrlf配置是什么,该文件都是Unix格式的

对于“git show”命令,如何使用正确的autocrlf检索文件?

测试(使用git 2.24.0)显示:

git cat-file --filters HEAD:path/file
将对对象的内容应用CRLF过滤器(可能还有污点过滤器,但不包括
textconv
设置)。(注意:请参阅哪个
.gittributes
文件内容定义了应该使用的过滤器。)似乎没有办法使用
git show
打开
--filters
(但可能应该有)


--filters
选项是Git2.11中的新选项,于年引入(作者Johannes Schindelin)。

torek的答案并不完全正确

--过滤器
将应用当前工作目录中的过滤器(例如
.gittributes
),而不是特定头部或SHA1处的
.gittributes

#在提交4324a3时显示路径/文件,
#但是应用工作目录中当前存在的.gittributes。
git cat文件--过滤器4324a3:路径/文件


我认为目前没有一种方法可以在特定提交时应用历史
.gittributes
中的过滤器来显示文件;除非签出提交并显式删除和恢复感兴趣的文件(删除和还原/签出是必要的,以便实际运行筛选-例如,如果文件在整个时间内都相同,但只有
.gittributes
eol
从say
crlf
移动到
lf
,或者以其他方式)t转换:
git show--textconv
(或者使用
git show--no textconv
)显式禁用它。文档没有说明是为
git show
启用还是禁用默认值,而是查看当前源(~git 2.24)显示它已启用。@torek OP并没有这样做。您可以将此作为答案发布。文档不明确
。因此,默认情况下,textconv筛选器仅对git diff[1]和git log[1]启用,而不对git格式修补程序[1]启用或者diff管道命令。
@PanagiotisKanavos:Aha:测试证明
--textconv
不应用EOL转换。它只应用
.gittributes
中的显式
textconv
设置(然后可能仅在执行diff时,而
git show
不应用)但是,
git cat file--filters
确实起到了作用。