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

2019-11-19 20:39:58 +08:00
 overflow99
4553 次点击
所在节点    程序员
14 条回复
zjsxwc
2019-11-19 20:51:53 +08:00
无解,如果你用 JB 家的 IDE 的话打开那个要恢复的文件看看 工具栏 VCS --> Local History --> Show History 有没有记录可以恢复吧
zjsxwc
2019-11-19 20:54:36 +08:00
如何要恢复的文件已经被删掉了,就选中上级目录后 看看 工具栏 VCS --> Local History --> Show History 有没有记录可以恢复
Dachunlv
2019-11-19 20:57:25 +08:00
如果楼主用的是 Intellij IDEA 或者工程放在了 Dropbox 中,还有救,其他的恢复方式还不清楚...
tsl0922
2019-11-19 21:46:03 +08:00
如果没有执行过 gc 的话,还能恢复,但是文件名应该没了。试试 git fsck --lost-found,有没有 dangling 的 blob 对象列出,然后尝试 git cat-file -p 对象 id 能输出对象内容。
bejond
2019-11-19 22:19:01 +08:00
你把你最后执行的几个命令到谷歌上搜搜,加个 revert。一般你能遇到的事故,大牛都有解决方案。
githua
2019-11-19 23:10:50 +08:00
不用担心,可以找回的,在你执行 git add 的时候,git 已经帮你把他们保存到 .git\objects 目录了。这里有个命令可以查看文件内容,如果文件很多,可以批量执行。
$ git cat-file -p e61ef7b965e17c62ca23b6ff5f0aaf09586e10e9

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

目前的情况,你连问题现象都很难说清楚,建议还是找个人帮你现场解决。或者,通读一遍 https://git-scm.com/book/zh/v2 然后再求助搜索引擎
xzysaber
2019-11-20 09:27:29 +08:00
不知道是否理解了你的描述(或许遗漏了部分描述),如果只是从 stage 撤销,那么文件还是在工作区的,可以用 git status 查看下。如果你还做了一些没有描述的操作导致工作区中的文件也丢失了,如果 IDE 用的是 jetbarins 家的话,或许可以从 local history 中找回,或者直接在 IDE 内 Ctrl+z 试下。
cco
2019-11-20 10:36:50 +08:00
新增的文件,撤销不会不见啊。
git reset HEAD
az999
2019-11-20 10:48:37 +08:00
lepig
2019-11-20 11:21:52 +08:00
@IridiumPt 我使用`git add .`以后 然后 cd 到`.git/objects`下面查看,好像并没有我执行命令的时间点创建的文件夹呢?
overflow99
2019-11-20 12:18:18 +08:00
---已解决---
通过 @tsl0922 的方法,找到了文件,里面是每个文件和 commit 历史
查看:git cat-file -p + <hash> 如果是文件看到具体可读代码,如果是 commit 看到文件改动信息
恢复:git stash apply +<hash>
由于我是一次性增加很多文件,中途没提交过一次,这种方法恢复起来比较麻烦,哎。。。我已经开始重写了。给大家个建议,开发过程中尽量要多次 commit
IridiumPt
2019-11-20 14:30:29 +08:00
@lepig `git add`的文件内容没改变的话就不会生成新的 blob 组件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/621156

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX