我遇到过很奇怪的问题:
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 就没有发现这个现象了。这到底是什么原因
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 就没有发现这个现象了。这到底是什么原因


