git reset --hard撤销上一次commit后部分文件消失

本文详细介绍了如何使用 Git 撤销最近的 commit 和 add 操作,以及在执行 reset 后如何恢复丢失的文件。通过 `git reset --soft` 和 `git reset --hard` 命令进行撤销,并利用 `git reflog` 查找丢失的提交来恢复文件。此外,还提供了后续操作建议,如使用 git stash 和 git pull 来管理本地改动,确保代码一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 撤销上一次commit/add

参考:git撤销已提交的commit

"git撤销上一次commit的内容"
> git reset --soft HEAD^
> git reset --soft HEAD~1

"如果需要连add的文件也一并撤销,使用命令"
> git reset --hard HEAD^1

# 或者
> git reset --soft HEAD~

"""
HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1 如果进行两次的commit,想要都撤回,可以使用HEAD~2
–soft 不删除工作空间的改动代码 ,撤销commit,不撤销git add file
–hard 删除工作空间的改动代码,撤销commit且撤销add
"""

2. 因为reset导致部分文件消失

但是后来发现,执行上面的操作之后,会有一些文件丢失。。

网上最常见的一种方法比较复杂,可以去看参考中的[1,2,4]

这里只记录相对简单的一种,主要是参考中的[5],

"1. 使用git reflog show查看自己reset时的HEAD@{num}"
>git reflog show
68ae78b (HEAD -> dev) HEAD@{0}: reset: moving to HEAD^
f0a236c HEAD@{1}: commit: initial commit
68ae78b (HEAD -> dev) HEAD@{2}: checkout: moving from XXXto dev
3d03b4f (origin/master, origin/XXX, origin/XXX, origin/HEAD, huangs) HEAD@{3}: reset: moving to origin/HEAD
3d03b4f (origin/master, origin/XXX, origin/XXX, origin/HEAD, huangs) HEAD@{4}: checkout: moving from dev to XXX
68ae78b (HEAD -> dev) HEAD@{5}: reset: moving to HEAD
68ae78b (HEAD -> dev) HEAD@{6}: commit: first update
f3f616b (origin/dev) HEAD@{7}: clone: from http://XXX/XX/XXXX.git

"2. 假设想要恢复的是68ae78b ,即HEAD@{0},使用git reset "
> git reset HEAD@{0}
Unstaged changes after reset:
M       XXX/XXX/XXX.cfg

"如果在恢复之前又进行了修改,那么这里会提示,但是会覆盖。"

"3. 如果上述命令无效,可以尝试这个,HEAD@{0}对应的hash"
> git reset --hard 68ae78b 

执行完上述命令,就可以看到上次的内容就恢复了。

如果依然无法解决,自己去看✅stack overflow:Recover from git reset --hard?


参考:

  1. ✅优快云:恢复因git reset --hard 但未提交全部文件到仓库导致的文件丢失问题
  2. 掘金:git reset --hard后如何恢复文件
  3. 简书:git reset --hard 操作后的数据恢复
  4. 博客园:git reset --hard 操作后的数据恢复
  5. ✅stack overflow:Recover from git reset --hard?

3. 后续操作

虽然恢复了,但是会导致,上一次撤销的commit/add也恢复,因此最好是

git stash # 将改动藏起来
git pull  # 用新代码覆盖本地代码
git stash pop # 将刚藏起来的改动恢复

"然后再add ,commit,push"
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吨吨不打野

解决了问题,觉得还行就给点

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值