问题:某个分支上修改了二进制文件,导致 changes 一直存在,切换到主分支也仍然存在,点击 Discard 也没用
使用 git reset --hard 还原到初始状态,也不行,不过输出结果会给出错误信息
Encountered 7 file(s) that should have been pointers, but weren't:
解决方法:
根据这个线索,搜索了相关案例(其实早就应该主要到这个提示了,折腾了很久
- https://stackoverflow.com/a/54804224/11128312
以下是解决方法:
Try the following command sequence:git lfs uninstall git reset --hard git lfs install git lfs pullIn case if this is not working (because this was not working for me), the following hack may work:git rm --cached -r . git reset --hard git rm .gitattributes git reset . git checkout .
我用的是第二种方法,第一种会卸载 lfs,不太安全
不过我们也能看出来,跟 lfs 策略有关系
借助 Ai 解答
git rm --cached -r .
:从暂存区移除所有文件,但保留工作目录中的文件。git reset --hard
:重置工作目录和暂存区,丢弃所有未提交的更改。git rm .gitattributes
:删除.gitattributes
文件,移除之前的 LFS 跟踪设置。git reset .
:将工作目录中的文件状态恢复到最新提交的状态。git checkout .
:确保工作目录的文件与当前分支的状态一致。
这种方法能有效地清理状态,确保没有未跟踪的文件和修改。