使用git检出curl会导致修改后的文件无法恢复

时间:2016-04-06 16:28:14

标签: git

当我像这样检查卷曲时:

git clone https://github.com/bagder/curl.git

我得到(没有做任何事)2个修改过的文件:

> git status
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   winbuild/Makefile.msvc.names
    modified:   winbuild/MakefileBuild.vc

no changes added to commit (use "git add" and/or "git commit -a")

即使我尝试签出这样的文件:

git checkout winbuild/Makefile.msvc.names

他们仍然被修改。对git diff -R的调用表明它可能与行结尾有关,因为差异显示^M附加到每一行。

由于评论中建议该问题与.gitattributes文件有关,因此它是:

*.dsw -crlf
buildconf eol=lf
configure.ac eol=lf
*.m4 eol=lf
*.in eol=lf

删除我的gitconfig不会改变这种情况,所以我猜它与此无关。

顺便说一下,我在ubuntu linux上。

1 个答案:

答案 0 :(得分:0)

winbuild中有第二个MakefileBuild.vc eol=crlf Makefile.msvc.names eol=crlf Makefile.vc eol=crlf 文件,内容为:

.gitattributes

此行会导致使用Windows样式的行结尾。

解决此问题的一种方法是删除{{1}}并将其检入git。当然,这会删除文件的初衷。