V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
abcbuzhiming
V2EX  ›  git

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

  •  
  •   abcbuzhiming · 2022-03-02 17:37:15 +08:00 · 2564 次点击
    这是一个创建于 1026 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我遇到过很奇怪的问题:

    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 就没有发现这个现象了。这到底是什么原因
    7 条回复    2022-03-02 22:56:07 +08:00
    502badgateway
        1
    502badgateway  
       2022-03-02 17:40:15 +08:00
    当前目录下先 git reset 一下
    sfqtsh
        2
    sfqtsh  
       2022-03-02 18:28:49 +08:00 via Android   ❤️ 2
    据我经验,一般是 filemode,ignorecase,symlinks,autocrlf 之一
    duke807
        3
    duke807  
       2022-03-02 18:45:22 +08:00 via Android
    清理垃圾的 2 條命令,要配合服用:
    git reset --hard
    git clean -dxf
    chenxytw
        4
    chenxytw  
       2022-03-02 20:11:29 +08:00
    没有现场,不好说
    另外,建议使用较新的 git (>=2.23),新加的 git restore 命令。
    lniwn
        5
    lniwn  
       2022-03-02 20:47:49 +08:00
    我遇到一个,是 git-lfs 导致的
    cweijan
        6
    cweijan  
       2022-03-02 20:49:52 +08:00
    我知道的就是你说的那两点, 其他情况没遇到过
    rekulas
        7
    rekulas  
       2022-03-02 22:56:07 +08:00
    纠正下是 modified
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   982 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:55 · PVG 02:55 · LAX 10:55 · JFK 13:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.