为什么 git checkout 无法还原状态为 modify 的文件?

2022-03-02 17:37:15 +08:00
 abcbuzhiming
我遇到过很奇怪的问题:

windows 环境下,远程仓库比本地仓库领先好几个版本,本地有一部分文件因为无意义的修改,导致无法 pull 合并,提示我要么保存,要么还原。

然后我还原了所有的文件,就惊讶的发现有 3 个文件,还原不了,git status 看,它们的状态都是 modifyed ,但是 git checkout 文件名就是无效;后来网上查了一下,于是用 git reset head 文件名,在 checkout ,还是不行。
git pull 始终提示这 3 个文件被修改过,所以无法 merge ; git status 看到这 3 个文件始终是 modifyed 状态。

于是我就开始上网查原因,发现 stackflow 有个文章提了两点:
1.如果开启了 core.autocrlf ,也就是自动换行符转换,那么可能会发生这个现象,但是我并没有开。
2.如果你的操作系统是大小写不敏感,而恰好你 git 的仓库有两个同名,但是大小写有区别的文件,就会导致这个问题。windows 确实是大小写不敏感;但是我检查了 git 的仓库,没有发现同名但是大小写不同的文件。


所以这个问题最后我也没有解决,只能删除旧的本地库后,重新 clone 一份了事,新的 clone 就没有发现这个现象了。这到底是什么原因
2271 次点击
所在节点    git
7 条回复
502badgateway
2022-03-02 17:40:15 +08:00
当前目录下先 git reset 一下
sfqtsh
2022-03-02 18:28:49 +08:00
据我经验,一般是 filemode,ignorecase,symlinks,autocrlf 之一
duke807
2022-03-02 18:45:22 +08:00
清理垃圾的 2 條命令,要配合服用:
git reset --hard
git clean -dxf
chenxytw
2022-03-02 20:11:29 +08:00
没有现场,不好说
另外,建议使用较新的 git (>=2.23),新加的 git restore 命令。
lniwn
2022-03-02 20:47:49 +08:00
我遇到一个,是 git-lfs 导致的
cweijan
2022-03-02 20:49:52 +08:00
我知道的就是你说的那两点, 其他情况没遇到过
rekulas
2022-03-02 22:56:07 +08:00
纠正下是 modified

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/837503

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX