Git执行hard reset回退到旧提交后,如何找回commit并将HEAD前移?

找回file.txt(v3)版本的方法
hard reset执行后,Git不会立即删除已有的提交记录,只要还没到reflog过期时间、没有手动执行垃圾清理,就可以通过以下步骤恢复:
- 第一步:执行
git reflog查看HEAD的操作历史,找到hard reset之前对应v3版本的提交哈希(一般是7位字符串,示例为f82a391) - 仅恢复单个file.txt的v3版本:执行
git checkout f82a391 -- file.txt,执行后v3版本的文件会直接覆盖当前工作目录和暂存区的file.txt,确认内容无误后可自行提交 - 恢复整个仓库到v3版本的完整状态:执行
git reset --hard f82a391,即可直接回到hard reset前的仓库状态
关于HEAD向前移动的说明
HEAD本身就是指向当前提交的可移动指针,完全可以向前移动:
- 如需让当前分支和HEAD一起向前移动到某个后续提交,直接执行
git reset --hard <目标提交哈希>即可 - 如需临时查看某个靠前提交的内容、不改动当前分支指针,可执行
git checkout <目标提交哈希>,此时HEAD会进入分离头状态,操作完成后切回原有分支即可恢复原有状态
注意:reflog的操作记录默认保留30天,超过期限的提交可能会被Git自动清理,建议误操作后尽快执行恢复操作。
内容的提问来源于stack exchange,提问作者variable
相关产品推荐
相关产品推荐

