git reset —hard后暂存区代码跑哪儿去了?

2,227次阅读
7 条评论

共计 1773 个字符,预计需要花费 5 分钟才能阅读完成。

前言

昨天博主在临近下班之时,准备提交代码到远程 Git,当我 Pull 远程代码的时候提示我有冲突,主要是 resource 目录下的文件被删除的更新,奈何 IDEA 又不给我个合并的界面,只告诉我这几个文件需要合并~
git reset —hard 后暂存区代码跑哪儿去了?
于是我脑袋一热就回滚到有需要合并的那个 commit 版本,然后就 fuck,我暂存区的代码全部“game over!”不见了。

解决方案

发现代码不见了顿时就像第一次见了喜欢的姑娘,心里那是一波又一波的小鹿乱撞,不过这是悲伤的。

于是乎就在网上急切的寻找办法,终于在我一顿操作猛如虎的搜索下,最终将代码恢复了。

在仓库的目录下打开终端,输入:

find .git/objects -type f | xargs ls -lt | sed 60q

其中末尾的 60q 代表最近 60 次的 add 操作,然后会出来很多类似于这样的记录:

-r--r--r--  1 licoy  staff      249 Jun 17 17:59 .git/objects/c0/dd72f08b16a4f9c1d87b836b7ecee75a332252
-r--r--r--  1 licoy  staff       45 Jun 17 17:59 .git/objects/58/c50797f9fe9dceda109019a2b8d9cf18a48df4
-r--r--r--  1 licoy  staff       46 Jun 17 17:59 .git/objects/9c/9c6c686a21fc394d8dfc550f41824205b1dffa
-r--r--r--  1 licoy  staff      750 Jun 17 17:59 .git/objects/d7/73c7e375a316fe3e00800ffd5c5be49b00fba3
-r--r--r--  1 licoy  staff     1217 Jun 17 17:59 .git/objects/6b/a44cf7a71f83f06d969af0a2464451edc133bb
-r--r--r--  1 licoy  staff    29067 Jun 17 17:57 .git/objects/1a/56f322c6cbe07642ca248cc8de3a63d5acd0d7
-r--r--r--  1 licoy  staff      200 Jun 17 17:55 .git/objects/30/3d28198f9375111092438ddb7d872aca84f863
-r--r--r--  1 licoy  staff       79 Jun 17 17:55 .git/objects/ab/0c251513237d54b9c439e73a2f26486432ed3d
-r--r--r--  1 licoy  staff      234 Jun 17 17:55 .git/objects/e4/57508e691703f4ff58a69f3410cd28f3780d63
-r--r--r--  1 licoy  staff       45 Jun 17 17:55 .git/objects/67/948e2e1cb35a82799585b64859d8473b01dbe7
-r--r--r--  1 licoy  staff       47 Jun 17 17:55 .git/objects/f5/4b5612be0810f4658c15a9a2297ac34198c7e0
-r--r--r--  1 licoy  staff      250 Jun 17 17:39 .git/objects/1a/908f631cfe95ab0979877f929280992bacc009
...

然后我们选择差不多最近的时间记录,然后找到他的文件路径在终端输入

git cat-file -p {commit_id} > c.txt

其中 {commit_id}.git/objects/ab/0c251513237d54b9c439e73a2f26486432ed3d部分中的ab/0c251513237d54b9c439e73a2f26486432ed3d,要去掉中间的斜杠,然后就是一次commit_id

执行上述命令之后会将 commit_id 主要内容输出到 c.txt,然后我们需要人工辨别记录内容是不是我们暂存区的内容,如果是,那我们只需要在回滚到这个commit_id 版本即可。

尾记

这次的操作之后让我对每次的回滚更加小心翼翼了,说白了还是对 Git 不是那么透彻,git reset --hard要慎用,用不好就像用了 rm -rf xxx 一样,后悔莫及哟~

正文完
使用官方微信小程序体验更多功能
post-qrcode
 22
憧憬Licoy
版权声明:本站原创文章,由 憧憬Licoy 于2020-06-18发表,共计1773字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(7 条评论)
头条 评论达人 LV.1
2021-03-13 19:35:46 回复

支持一下交个朋友

 Windows  Chrome  中国江苏省南京市移动
评论达人 LV.1
2021-03-13 15:53:46 回复

可以

 Windows  Edge  中国重庆重庆市电信
今日新鲜事 评论达人 LV.1
2021-02-03 00:43:13 回复

文章不错非常喜欢

 Windows  Chrome  中国广西贺州市联通
1 评论达人 LV.1
2020-11-12 11:01:17 回复

:neutral:

 Macintosh  Chrome  中国山西省晋中市联通
♚ 사 랑 评论达人 LV.1
2020-10-14 17:51:19 回复

很不错

 iPhone  Weixin  中国北京北京市电信
朋友圈 评论达人 LV.1
2020-08-11 22:21:32 回复

原来这样,也算是很不错了,终于明白了!

 Windows  Chrome  中国湖南省株洲市电信
pornlist 评论达人 LV.1
2020-06-20 11:58:29 回复

This is a good blog, happy every day

 Windows  Chrome  中国上海上海市电信