8

我将存储库切换到我的分支,当我打印 git status 我看到修改文件时,我尝试执行 git reset --hard 但没有效果:((

git status
On branch release

Changes not staged for commit:

    modified:   htdocs/fonts/OfficinaSansBoldC.eot
    modified:   htdocs/fonts/OfficinaSansBoldC.svg
    modified:   htdocs/fonts/OfficinaSansBoldC.ttf
    modified:   htdocs/fonts/OfficinaSansBoldC.woff
    modified:   htdocs/fonts/OfficinaSansC-Book.eot
    modified:   htdocs/fonts/OfficinaSansC-Book.svg
    modified:   htdocs/fonts/OfficinaSansC-Book.ttf
    modified:   htdocs/fonts/OfficinaSansC-Book.woff

no changes added to commit 

git reset --hard origin/release

git status
On branch release

Changes not staged for commit

    modified:   htdocs/fonts/officinasansboldc.eot
    modified:   htdocs/fonts/officinasansboldc.svg
    modified:   htdocs/fonts/officinasansboldc.ttf
    modified:   htdocs/fonts/officinasansboldc.woff
    modified:   htdocs/fonts/officinasansc-book.eot
    modified:   htdocs/fonts/officinasansc-book.svg
    modified:   htdocs/fonts/officinasansc-book.ttf
    modified:   htdocs/fonts/officinasansc-book.woff

no changes added to commit 
4

3 回答 3

9

输入 core.autocrlf 的问题在于,即使对于不应触及的(二进制)文档,它也可以更改 eol(行尾)字符。

尝试:

git config --global core.autocrlf false
git clone /url/your/repo

(意味着再次克隆你的仓库,看看那些差异是否仍然存在)


使用 git 2.8(2016 年 3 月),您将能够快速检查这些更改是否与 eol 相关。

请参阅Torsten Bögershausen ( )的提交 a7630bd(2016 年 1 月 16 日) 。(由Junio C Hamano 合并 -- --提交 05f1539中,2016 年 2 月 3 日)tboegi
gitster

ls-files: 添加 eol 诊断

在跨平台环境中工作时,用户可能希望检查文本文件是否在存储库中标准化存储以及是否.gitattributes设置正确。

让 Git 在索引和工作树中显示行尾以及有效的 text/eol 属性成为可能。

行尾 (" eolinfo") 如下所示:

"-text"        binary (or with bare CR) file
"none"         text file without any EOL
"lf"           text file with LF
"crlf"         text file with CRLF
"mixed"        text file with mixed line endings.

有效的 text/eol 属性是以下之一:

"", "-text", "text", "text=auto", "text eol=lf", "text eol=crlf"

git ls-files --eol给出这样的输出:

i/none   w/none   attr/text=auto      t/t5100/empty
i/-text  w/-text  attr/-text          t/test-binary-2.png
i/lf     w/lf     attr/text eol=lf    t/t5100/rfc2047-info-0007
i/lf     w/crlf   attr/text eol=crlf  doit.bat
i/mixed  w/mixed  attr/               locale/XX.po

i显示在索引 (' ') 和工作树 (' ')中的数据中使用了什么 eol 约定w,以及对显示的每个路径有效的属性

于 2014-12-20T07:03:58.473 回答
3

我也遇到了同样的问题。当我运行命令git diff时,结果是:

Binary files a/app/webroot/font-awesome-4.4.0/fonts/fontawesome-webfont.ttf and b/app/webroot/font-awesome-4.4.0/fonts/fontawesome-webfont.ttf differ
warning: CRLF will be replaced by LF in app/webroot/font-awesome-4.4.0/fonts/fontawesome-webfont.ttf.
The file will have its original line endings in your working directory.

我试过git reset --hard .了,但没有用。但是当*.ttf binary附加到.gitattributes文件中时,该reset命令起作用了。

欢呼。

于 2015-10-22T03:15:45.607 回答
0

它不起作用的原因是传递给 git 的行尾信息冲突。尝试:

git ls-files --eol | grep /path/to/problematic/file

您可以在 .git/info/attributes 文件中添加一行来缓解问题。有关详细信息,请参阅我答案

于 2018-12-26T21:40:57.070 回答