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

VSCODE GIT 放弃更改后文件被删除了,无法恢复

  •  
  •   547674115 · 2021-06-16 13:51:11 +08:00 · 3661 次点击
    这是一个创建于 1254 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个程序在 VSCODE 打开后,放弃了所有更改,工作了几天的东西没了,这几天做的也没有上传到 github 。 我尝试了 git log 只有我许久之前的提交记录, 许多网上的方法已经试过了都不行,我尝试用恢复软件去恢复,但是也扫描不出来, 我觉着 git 的删除不是平时我们那种的删除,但是我能力有限只能尝试到这一步了, 抱着最后一丝希望来 V 站问问各位彦祖,有没有什么解决的办法。

    第 1 条附言  ·  2021-06-16 16:59:02 +08:00
    感谢回答的各位,幸亏之前 build 了一个 apk 出来,可以照着弄,用了一个下午把之前做的重新弄得八九不离十了。
    再次感谢回答的各位彦祖,晚点忙完了,小币送上。
    19 条回复    2021-06-21 23:29:23 +08:00
    codehz
        1
    codehz  
       2021-06-16 13:53:42 +08:00
    你点放弃更改就是删除没提交本地文件了(就字面意义的恢复到修改之前的状态)。。。以后多注意下吧。。。
    liyang5945
        2
    liyang5945  
       2021-06-16 13:58:38 +08:00
    换 jetbrain 家的 ide 吧,有本地历史功能
    BrettD
        3
    BrettD  
       2021-06-16 14:01:05 +08:00
    你放弃更改的意思就是删除你自己在本地没有提交的更改,你也没有 stash,找不回来了
    no1xsyzy
        4
    no1xsyzy  
       2021-06-16 14:09:31 +08:00   ❤️ 1
    如果 add ( stage )过有概率还能 git reflog 找出来,没了就真没了
    防呆不防傻
    villivateur
        5
    villivateur  
       2021-06-16 14:13:25 +08:00 via Android
    这次就当长个教训吧,以后还用 git 的话,建议学习下基本的理论
    phony2r
        6
    phony2r  
       2021-06-16 14:16:27 +08:00
    我一直要求团队里的人用 git cli, 不要用 gui 这种花里胡哨的东西
    rannnn
        7
    rannnn  
       2021-06-16 14:17:30 +08:00   ❤️ 1
    galikeoy
        8
    galikeoy  
       2021-06-16 14:21:42 +08:00   ❤️ 7
    @phony2r #6 这也能怪到 GUI 头上去
    Snail5956
        9
    Snail5956  
       2021-06-16 14:33:50 +08:00
    如果是 Mac,time machine 里找找
    liuidetmks
        10
    liuidetmks  
       2021-06-16 14:35:21 +08:00   ❤️ 1
    如果编辑页面没关闭,control z 试试呢,说不能能回来
    a1gslyghmqnl
        11
    a1gslyghmqnl  
       2021-06-16 15:41:52 +08:00   ❤️ 1
    你算幸运的了,有个哥们丢了两个月的成果: https://github.com/microsoft/vscode/issues/32405

    我觉得 #6 说得有道理,别用 GUI,git 对于一些危险操作的判断逻辑比 vscode 的 GUI 严格多了,谁能保证不出错呢?

    而且拥有拉个临时分支及时 commit 的习惯也是好的,只要提交进仓库就一定能找回来,后续 push 之前自己 rebase 整理一下提交即可。要不就装个 local history 插件。
    keepeye
        12
    keepeye  
       2021-06-16 16:33:18 +08:00
    吸收教训,下次不要两天都不提交了。
    msg7086
        13
    msg7086  
       2021-06-16 16:34:03 +08:00
    @a1gslyghmqnl 严格多了(指 hard reset 连确认都没有

    遇上不好用的 GUI,第一反应竟然是用 CLI 而不是找一个好的 GUI ?
    Ranying
        14
    Ranying  
       2021-06-16 16:36:16 +08:00   ❤️ 1
    没进暂存区,相当于从最新版本库覆盖当前文件。
    yEhwG10ZJa83067x
        15
    yEhwG10ZJa83067x  
       2021-06-16 17:08:12 +08:00
    @msg7086
    说实话,我第一反应也是用 CLI,官方也推荐使用 CLI 。
    a1gslyghmqnl
        16
    a1gslyghmqnl  
       2021-06-16 17:13:03 +08:00
    @msg7086 跟 reset 没关系,我刚开始说的是 git checkout 到别的分支,这个错误会直接抛给 vscode GUI,所以并不比 GUI 更严格,这个是我说错了。但是,我说的是危险操作别用 GUI,第一,至少你一个一个敲进去的时候还能在自己脑子里过一遍;第二,这不是好不好用的问题,GUI 就没有这种操作模式。GUI 拿来做看看 diff 和 graph 之类的无关紧要的操作不就得了。
    msg7086
        17
    msg7086  
       2021-06-17 02:56:42 +08:00   ❤️ 2
    @justrand @a1gslyghmqnl
    如果 GUI 做不到 CLI 能做的工作,那说明这个 GUI 还有待改进。
    我几年前就和别人辩论过一次。我的观点是,人类的大多数操作还是要依赖直观的图形界面。就比如人们常用的文本编辑工具 vim 就是图形界面,CUI/GUI 。对于简单的或者批量的操作,sed awk 之类的 CLI 工具更方便,但是任何复杂的交互还是 vim emacs 甚至是 nano 这样的图形界面工具做得更好。

    另外我用的 GUI 在切换分支时如果要重置文件的话是会自动提示 stash 的,CLI 反倒是严格要求用户必须记得手动执行 stash 。所以我以前教人用 git 的时候,都是给 GUI,然后让他们看看在做一些复杂操作的时候,GUI 是怎么调用 CLI 的,然后再学习对应的 CLI 以备不时之需。在我这里,CLI 基本上才是做一些无关紧要的操作(比如 pretty print git log 之类的)。
    AndyAO
        18
    AndyAO  
       2021-06-21 13:34:06 +08:00
    @no1xsyzy #4 reflog 是记录 HEAD 的 ref 变更的,所以就算曾经在 stage 中存在过,应该也是找不回来的
    no1xsyzy
        19
    no1xsyzy  
       2021-06-21 23:29:23 +08:00
    @AndyAO 啊,应该是 `git fsck --lost-found`
    (记不住不常用指令,并且我目前还足够小心故而没用到过这个)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   959 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:48 · PVG 05:48 · LAX 13:48 · JFK 16:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.