git显示修改文件但我没有改变任何git reset不起作用

时间:2014-12-19 21:32:26

标签: git line-endings git-status

我克隆存储库切换到我的分支,当我打印git状态时,我看到修改文件,我尝试做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 

3 个答案:

答案 0 :(得分:5)

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

尝试:

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

(意思是再次克隆你的回购,看看那些差异是否还存在)


使用git 2。8(2016年3月),您可以快速检查这些更改是否与eol相关。

commit a7630bdTorsten Bögershausen (tboegi)(2016年1月16日) Junio C Hamano -- gitster --于2016年2月3日commit 05f1539合并)

  

ls-files:添加eol diagnostics

     

在跨平台环境中工作时,用户可能想要检查文本文件是否在存储库中标准化存储,以及是否正确设置了.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
  

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

答案 1 :(得分:1)

我也遇到了同样的问题。 当我运行命令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命令会起作用。

欢呼。

答案 2 :(得分:0)

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

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

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