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

Git 未检测到修改怎么办?

  •  
  •   xxgirl2 · 2015-04-22 00:38:37 +08:00 · 8401 次点击
    这是一个创建于 3487 天前的主题,其中的信息可能已经有所发展或是发生改变。

    任何 repo(clone 的也好 init 的也好)不论经过什么修改(除了 new file),执行 git add -A 后再执行 git status 或 git commit,均提示 up-to-date。更不用说 git push 之类的东西了 = =

    更严重的是,文件改名会被识别成 new file
    好像整个 git 都是只根据文件名判断更新了

    另外修改完内容之后,执行 git reset --hard 会消灭所有修改,尽管那些修改并没有被识别出来。

    使用的是 msysgit。重装这软件也不行。

    那么这种情况应该怎么办?

    16 条回复    2020-06-01 18:05:56 +08:00
    ryd994
        1
    ryd994  
       2015-04-22 01:34:56 +08:00 via Android
    我没看见任何bug啊……
    commit完难道不是uptodate么?
    如果别人修改过你就pull啊
    移动文件请用git mv
    konakona
        2
    konakona  
       2015-04-22 01:43:43 +08:00
    我确实遇到过一个真实的情况,就是最近的项目。
    大概是这样的:
    我OSX\对方WIN
    2点10分我进行了数个commit的Push
    3点钟我看到对方在我最后的记录之后进行了Commit的提交!而且没有合并!(也就是说,对方没有进行Pull,直接将自己的Commit就Push上去了……OMG)

    我不知道GIT还可以这样-..- 至少在我跟服务器层面通信的时候(我开发,测试服务器微调+部署,服务器算是另一个代码贡献人一样的角色),我改了什么,服务器也改了什么的情况下,最后一个Push的人必须先Pull另外人的代码,然后GIT自动合并后,形成合并的commit,才能将Push...
    SharkIng
        3
    SharkIng  
       2015-04-22 01:54:17 +08:00
    我也是Git新手,不过 有Git add -a 这个命令么 ?
    NemoAlex
        4
    NemoAlex  
       2015-04-22 01:57:37 +08:00
    写代码就别用 Windows 啦
    有各种奇怪的问题也很正常,因为根本没几个人用,你就是小白鼠之一
    如果你觉得花时间在这些问题上是浪费生命的话,趁早撤离
    Earthman
        5
    Earthman  
       2015-04-22 01:58:10 +08:00 via Android
    显示up to date是因为把修改都提交到暂存区了,没有任何问题。你可以继续修改或者直接commit
    NemoAlex
        6
    NemoAlex  
       2015-04-22 01:59:38 +08:00
    @SharkIng 大写-A,等于--all
    貌似现在的版本 add -A 和 add . 的作用是完全一样的了?
    SharkIng
        7
    SharkIng  
       2015-04-22 02:48:43 +08:00
    @NemoAlex 好像是的,一般都用add就好了
    yangqi
        8
    yangqi  
       2015-04-22 03:02:43 +08:00
    看.gitignore了么?
    clino
        9
    clino  
       2015-04-22 07:07:06 +08:00 via Android
    @konakona 是不是 push -f了
    sanddudu
        10
    sanddudu  
       2015-04-22 07:29:09 +08:00 via Android
    @konakona 估计是随手 -force 了,那样会覆盖
    如果不加的话肯定会提示无法 pull
    xxgirl2
        11
    xxgirl2  
    OP
       2015-04-22 12:07:43 +08:00
    @ryd994 问题是add之后commit之前。连commit都做不到。或者说,add这个过程都没发现修改。
    @NemoAlex 至于脱离M$,我真没有任性的资本……虽然经常用C#,然而现在问题扩散到了任何repo。
    @Earthman 不论文件内容怎么变,都是nothing to commit,除非文件列表名有变动。即使文件名变了,它也永远是 new file。
    @yangqi 里面什么都没有,完全从空 repo 起步的也这样,而且清空了用户配置文件也没用。
    @konakona 问题不一样,我这是 add 出问题了,看样子是 diff 突然只认文件名了,不知为啥。
    xxgirl2
        12
    xxgirl2  
    OP
       2015-04-22 12:40:36 +08:00
    切换了用户也没用 = =
    应该是系统的什么地方出问题了。
    先用linux虚拟机将就一段时间,重装好烦……
    arkilis
        13
    arkilis  
       2015-04-23 10:06:21 +08:00
    你试过先

    git status

    再:

    git commit -A
    bombless
        14
    bombless  
       2015-04-23 19:32:28 +08:00
    大概明白楼主的意思了……
    就是说,git-status看到修改了,git-add之后git-status仍然是红色的(修改)而不是绿色的(加入暂存区)是吗。
    我的建议是……换Git……
    Windows下有3个版本的Git好吗,一个工作在cmd.exe下的,MSYS2维护了一支,cygwin又维护了一支。

    你换的时候是不需要做任何文件操作的,因为数据都在.git那个文件夹内,不会因为你换了Git的版本而丢失什么数据。
    shuirong1997
        15
    shuirong1997  
       2020-06-01 17:47:21 +08:00
    我也遇到这个问题了,场景是:刚合并分支,提交了代码,然后发现有个代码没写好。改完后顺手:git status,发现没监测到刚才的改动。我去文件里看,的确有改动啊。

    升级过 git,其他项目就没问题。我重新 clone 当前项目也没问题。奇怪了。
    尝试过:git rm -r --cached . 然后重新 add 进来,问题依旧存在。

    暂时重新 clone 项目了
    shuirong1997
        16
    shuirong1997  
       2020-06-01 18:05:56 +08:00
    @shuirong1997 #15 破案了。代码没保存,艹。

    为什么我就没往是否保存这方面想?
    因为我 vsc 一直配置了每 0.5s 自动保存功能,所以没手动保存的习惯。但这次合并代码涉及到.vscode/settings.json,然后里面有禁用自动保存的配置。艹。

    顺便将自动保存配置放出来:
    ```
    "files.autoSave": "afterDelay",
    "files.autoSaveDelay": 500,
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5385 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 08:36 · PVG 16:36 · LAX 00:36 · JFK 03:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.