为什么我不能拉/缩我的Git存储库?

时间:2017-12-11 14:18:06

标签: git

我有一个本地Git存储库,我试图与远程存储库同步。有一个二进制文件,我没有触及。但由于一些奇怪的原因,我无法改变:

git config --local core.autocrlf false
git reset --hard --quiet
git clean --force -d
git fetch --quiet
git checkout master
Already on "master"
git rebase --abort
git stash 
warning: CRLF will be replaced by LF in test_assets/favicon.ico.
The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in test_assets/favicon.ico.
The file will have its original line endings in your working directory.
git rebase --strategy-option=theirs origin/master
Cannot rebase: You have unstaged changes.
Please commit or stash them.

M   test_assets/favicon.ico

我该怎么办?

1 个答案:

答案 0 :(得分:3)

favicon.ico文件通常是binary file。你的Git警告:

warning: CRLF will be replaced by LF in test_assets/favicon.ico.

告诉我们您 - 可能是无意中指示您的Git将其视为文本文件。

因此,当Git从存储库中出来时,根据您的指示修改文件。这就是为什么它显示为已修改的原因,以及为什么在您提交更改之前无法合并或重新绑定,而是告诉您想要的Git。

解决方案是停止告诉Git这个文件是文本。很难说肯定哪里你告诉Git这个文件是文本,因为这些东西有多种机制,但是如果你有一个.gitattributes文件,那么你可以使用它告诉Git这个文件,实际上任何名为*.ico的文件,绝对是不是文本,通过添加以下行:

*.ico   -text

到该.gitattributes文件(然后您可以git addgit commit进行具有更新.gitattributes的新提交。