git reset --hard 求救哈

2022-04-23 16:13:48 +08:00
 tlerbao

脑子抽筋,执行了 git reset --hard xxx

现在暂存区的所有没提交的修改都没了,

求救怎么恢复。

5188 次点击
所在节点    git
54 条回复
IceBay
2022-04-23 16:15:00 +08:00
看看 IDE 里有没有记录吧
v2kt
2022-04-23 16:15:57 +08:00
idea 文件历史记录
hxy100
2022-04-23 16:16:26 +08:00
不出意外应该是救不了了,如果远端仓库没备份的话,只能试试数据恢复软件。
villivateur
2022-04-23 16:18:52 +08:00
立刻断电,硬盘拆下来到另一台电脑做数据恢复
litujin1123
2022-04-23 16:20:48 +08:00
git reflog 应该能看到每次的操作 id ,可以回到那个 id 状态
xcsoft
2022-04-23 16:21:03 +08:00
试试 reflog
villivateur
2022-04-23 16:24:39 +08:00
@xcsoft 他是暂存区文件,肯定没了
golangLover
2022-04-23 16:26:15 +08:00
如果你用 jetbrains 就没事了,这钱是不能省的
tlerbao
2022-04-23 16:29:02 +08:00
@golangLover 我用的 phpstorm ,请问有办法恢复吗?
maninfog
2022-04-23 16:31:43 +08:00
右键项目,然后在 local history 里面看看有没有
tlerbao
2022-04-23 16:33:30 +08:00
@maninfog 牛逼啊 果然有,不过我记得 git reflog 是能恢复的吗?
baiyi
2022-04-23 16:36:06 +08:00
git reflog 并不记录 add 命令

但暂存区也是会有 object 文件的,最后实在不行的笨办法也可以根据文件更新时间手动寻找并恢复
xcsoft
2022-04-23 16:36:56 +08:00
@villivateur 自己试了下, 的确不行, 只能想其他办法了
maninfog
2022-04-23 16:38:25 +08:00
git reflog 我理解只会给你提供之前 HEAD 对应的 commit id ,适用于你提交了代码的情况,并且 git 会定期清除一些无用的 commit ,所以还有时限要求
tlerbao
2022-04-23 16:42:30 +08:00
感谢楼上各位,感谢 jetbrains ,感谢 phpstorm ,文件已经恢复了。

借此讨论下,已经 add 但是还没 commit 的 文件 当 reset --hard 后 真的没有办法通过 git 本身的手段找回吗?

git reflog 也不行吗?
wu67
2022-04-23 16:47:15 +08:00
reset hard 本来就是硬重置, git 本身肯定没法找回了...得借助另外的工具... 所以相应的, reset 还有 soft mix...
msg7086
2022-04-23 17:06:06 +08:00
没 commit 的文件不属于 git 管辖范围,怎么通过 git 的手段来找回呢。
首先得让更改进 git 才行啊。
SenLief
2022-04-23 17:08:34 +08:00
还没 commit 就还没提交给版本库,那肯定没有记录的。
misdake
2022-04-23 17:13:55 +08:00
local history 救过我好几命
des
2022-04-23 18:28:58 +08:00
暂存区确实没有 reflog ,但是会有 object 文件,我就找回来过,不过挺麻烦的

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

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

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

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

© 2021 V2EX