首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

git 新增的文件 git add. 后 不小心从暂存区撤销了 新增的文件都没了 求恢复

  •  
  •   overflow99 · 18 天前 · 1776 次点击
    14 回复  |  直到 2019-11-20 14:30:29 +08:00
        1
    zjsxwc   18 天前
    无解,如果你用 JB 家的 IDE 的话打开那个要恢复的文件看看 工具栏 VCS --> Local History --> Show History 有没有记录可以恢复吧
        2
    zjsxwc   18 天前
    如何要恢复的文件已经被删掉了,就选中上级目录后 看看 工具栏 VCS --> Local History --> Show History 有没有记录可以恢复
        3
    Dachunlv   18 天前 via iPhone
    如果楼主用的是 Intellij IDEA 或者工程放在了 Dropbox 中,还有救,其他的恢复方式还不清楚...
        4
    tsl0922   18 天前   ♥ 2
    如果没有执行过 gc 的话,还能恢复,但是文件名应该没了。试试 git fsck --lost-found,有没有 dangling 的 blob 对象列出,然后尝试 git cat-file -p 对象 id 能输出对象内容。
        5
    bejond   18 天前
    你把你最后执行的几个命令到谷歌上搜搜,加个 revert。一般你能遇到的事故,大牛都有解决方案。
        6
    githua   18 天前   ♥ 1
    不用担心,可以找回的,在你执行 git add 的时候,git 已经帮你把他们保存到 .git\objects 目录了。这里有个命令可以查看文件内容,如果文件很多,可以批量执行。
    $ git cat-file -p e61ef7b965e17c62ca23b6ff5f0aaf09586e10e9

    --- 因为我是 githui.com
        7
    IridiumPt   18 天前 via iPad   ♥ 1
    如#4 和#6 所说,可以根据添加文件后生成的 blob_id 查,到.git\objects 目录把文件夹按时间排序锁定 git add .后创建的文件夹,文件夹名+文件名=对应的 blob_id,然后 git cat-file -p blob_id
        8
    passerbytiny   18 天前
    所有 git 命令都是不允许删除本地工作空间已修改内容的。如果你只是不小心从暂存区撤销,那么新增文件应该在本地工作空间,不会消失。如果消失了,那是你(或者你的 GUI )做了其他操作。

    目前的情况,你连问题现象都很难说清楚,建议还是找个人帮你现场解决。或者,通读一遍 https://git-scm.com/book/zh/v2 然后再求助搜索引擎
        9
    xzysaber   18 天前
    不知道是否理解了你的描述(或许遗漏了部分描述),如果只是从 stage 撤销,那么文件还是在工作区的,可以用 git status 查看下。如果你还做了一些没有描述的操作导致工作区中的文件也丢失了,如果 IDE 用的是 jetbarins 家的话,或许可以从 local history 中找回,或者直接在 IDE 内 Ctrl+z 试下。
        10
    cco   18 天前
    新增的文件,撤销不会不见啊。
    git reset HEAD
        11
    az999   18 天前
        12
    lepig   18 天前
    @IridiumPt 我使用`git add .`以后 然后 cd 到`.git/objects`下面查看,好像并没有我执行命令的时间点创建的文件夹呢?
        13
    overflow99   17 天前
    ---已解决---
    通过 @tsl0922 的方法,找到了文件,里面是每个文件和 commit 历史
    查看:git cat-file -p + <hash> 如果是文件看到具体可读代码,如果是 commit 看到文件改动信息
    恢复:git stash apply +<hash>
    由于我是一次性增加很多文件,中途没提交过一次,这种方法恢复起来比较麻烦,哎。。。我已经开始重写了。给大家个建议,开发过程中尽量要多次 commit
        14
    IridiumPt   17 天前 via iPad
    @lepig `git add`的文件内容没改变的话就不会生成新的 blob 组件
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2277 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 04:01 · PVG 12:01 · LAX 20:01 · JFK 23:01
    ♥ Do have faith in what you're doing.