我有一个本地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
我该怎么办?
答案 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 add
和git commit
进行具有更新.gitattributes
的新提交。