Git Reset 彻底解析:--hard 模式操作步骤、风险与完整恢复指北
结论先行
使用 git reset --hard <commit_id> 可强制将本地代码、暂存区、工作目录彻底回退到指定提交状态,但会丢弃目标提交之后的所有提交记录(需谨慎操作,尤其涉及远程仓库时)。
文章持续更新,可以微信搜一搜「 半个脑袋儿 」第一时间阅读
详细说明
一、git reset 的核心作用
git reset 的本质是移动当前分支的 HEAD 指针到目标提交,根据参数不同(--hard/--soft/--mixed)决定是否修改工作目录和暂存区:
--hard:强制回退代码,工作目录、暂存区、提交历史全部回退到指定提交(最彻底,风险最高)。--soft:仅移动 HEAD 指针,工作目录和暂存区代码不变(适合重新提交)。--mixed(默认):移动 HEAD 指针并重置暂存区,但保留工作目录的修改(需重新git add)。
二、git reset --hard 操作步骤
定位目标提交:
git log --oneline ## 查看提交历史,复制目标提交的哈希值(前7位即可)
## 或使用图形化工具(如 `gitk`、IDE内置功能)
- 若提交已被覆盖,可通过
git reflog查看所有操作记录,找回丢失的提交哈希。
- 若提交已被覆盖,可通过
执行回退操作:
git reset --hard a1b2c3d ## 替换为实际提交哈希
- 效果:本地代码立即变为目标提交的状态,之后的提交从历史中移除(但未物理删除,可通过
git reflog恢复)。
- 效果:本地代码立即变为目标提交的状态,之后的提交从历史中移除(但未物理删除,可通过
同步远程仓库(谨慎):
git push -f origin <branch_name> ## 强制覆盖远程分支
- 风险:若他人已拉取旧提交并基于其开发,强制推送会导致代码混乱。
三、适用场景
- 场景 1:彻底丢弃本地未推送的提交(如实验性代码、错误提交)。
- 场景 2:修复个人分支的历史提交(如敏感信息泄露、错误合并)。
- 场景 3:回退到稳定版本后重新开发(需确保无协作依赖)。
四、注意事项
备份当前状态:
git checkout -b backup_branch ## 创建临时分支备份当前代码
恢复误操作:
- 若误删提交,通过
git reflog找到被重置的提交哈希,再次执行git reset --hard <commit_id>恢复。
- 若误删提交,通过
避免公共分支使用:
- 对团队协作的
main/develop等分支,优先使用git revert代替git reset,避免历史记录断裂。
- 对团队协作的
理解三种模式的区别:
模式 HEAD指针 暂存区 工作目录 典型用途 --hard移动 重置 重置 彻底回退代码 --soft移动 保留 保留 合并多个提交为一个 --mixed移动 重置 保留 部分撤销提交并重新整理
总结
git reset --hard 是高风险高回报的操作,能快速回退代码,但需严格遵循:
- 仅用于本地或私有分支。
- 操作前备份代码或创建临时分支。
- 理解
--hard与其他模式的区别。 - 公共分支回退优先选择
git revert。
Git Reset 彻底解析:--hard 模式操作步骤、风险与完整恢复指北的更多相关文章
- Git:上传GitHub项目操作步骤
git教程:git详解.gitbook #首次上传步骤 首先在工程文件位置处右键git bash here 本地创建ssh key $ ssh-keygen -t rsa -C "your_ ...
- LSI 9211-8I阵列卡IR模式Update为IT模式操作步骤!
以下是DOS系统环境下操作(也可以在windows.linux环境下,只要找到对应的tool就可以)相对应的tool官网可以下载 链接:https://www.broadcom.com/support ...
- git reset revert 回退回滚取消提交返回上一版本
git reset revert 回退回滚取消提交返回上一版本 总有一天你会遇到下面的问题. (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你 ...
- git 远程仓库版本的回退以及git reset 几种常用方式记录
由于 github push 了两个比较潦草的commit, 自己很不满意,又不想重新开vpn进行上传,所以找了一下相关的教程. 最后研究了一下,原理为先在本地还原到你想要的commit,然后强制pu ...
- 浅谈SQL Server中的事务日志(四)----在完整恢复模式下日志的角色
简介 生产环境下的数据是如果可以写在资产负债表上的话,我想这个资产所占的数额一定不会小.而墨菲定律(事情如果有变坏的可能,无论这种可能性有多小,它总会发生)仿佛是给DBA量身定做的.在上篇文章介绍的简 ...
- git reset三种模式
reset三种模式区别和使用场景 区别: --hard:重置位置的同时,直接将 working Tree工作目录. index 暂存区及 repository 都重置成目标Reset节点的內容,所以效 ...
- 撤销git reset soft head操作
一不小心在eclipse的git库中执行了Reset Soft(HEAD ONLY)操作,不料界面中竟然没有找到撤销方法(于是心中五味俱全,经过一番折腾,无果还是回归Git本身),最终通过命令行,很快 ...
- [转]恢复 git reset -hard 的误操作
转帖:http://hi.baidu.com/configuration/item/97fddeea252818d0eb34c964 有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 r ...
- 恢复 git reset -hard 的误操作
有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 reset, rebase 和 merge.甚至一些很小的操作,例如删除一个分支,我都担心数据丢失. 不 久之前,我在做一些大动作(re ...
- Git commit/pull/push的操作步骤
1.操作步骤需要严格执行如下顺序:commit->pull->push 2.commit:将代码提交到本地仓库. 3.pull:将远程仓库代码同步到本地仓库.如遇冲突,解决冲突,重复com ...
随机推荐
- JavaScript数组(包括上一笔记都是ECMAScript对象),BOM对象,DOM对象,html DOM Enent(事件)
JavaScript数组(包括上一笔记都是ECMAScript对象),BOM对象,DOM对象,html DOM Enent(事件) 1.Arrary; var ret = new Arrary(1,2 ...
- 问一下,利用在线 DeepSeek 等 API 服务实现一个答题 APP
简介 这是一个利用 Android 无障碍功能 + 悬浮窗 + 大模型的搜题应用 原理就是利用无障碍读取屏幕内容,然后通过悬浮窗来显示答案 众所周知我是一个学渣,所以在搜答案方面颇有成就 大概是在 4 ...
- flutter-TextField文本输入框 限制 数字键盘、输入小数点后两位
关键代码 keyboardType: TextInputType.number, inputFormatters: [ FilteringTextInputFormatter(RegExp(" ...
- 川崎机器人维修kasawaki维护注意事项
为确保川崎机械臂的正确安全操作.防止人员伤害和财产损失,请遵守下述方框符号表达的安全信息. --注意事项 在进行Kasawaki川崎机器人维修操作前,请注意如下事项以确保安全. 1. 在开始检查之前, ...
- 函数static的作用
限制作用域和保持状态 函数static的作用主要体现在限制作用域和保持状态两个方面.1 限制作用域 静态全局变量:在全局变量前加上static关键字,该变量就被定义成为一个静态全局变量.这种 ...
- Typecho 引入 DPlayer
想在文章中插入视频,尝试 iframe 和 video 标签后发现 m3u8 流会触发下载无法播放,用 hls 该问题后,碰到了 403 forbbiden.联想到前些天新浪图床加 referrer ...
- Flink学习(三) 批流版本的wordcount Scala版本
批处理代码: package com.wyh.wc import org.apache.flink.api.scala._ /** * 批处理代码 */ object WordCount { def ...
- Week09_day05(Hbase的安装搭建)
搭建完全分布式集群 HBase集群建立在hadoop集群基础之上,所以在搭建HBase集群之前需要把Hadoop集群搭建起来,并且要考虑二者的兼容性.现在就以5台机器为例,搭建一个简单的集群. 软件版 ...
- SM系列国密算法
其中SM1.SM4.SM7.祖冲之密码(ZUC)是对称算法:SM2.SM9是非对称算法:SM3是哈希算法.目前,这些算法已广泛应用于各个领域中,期待有一天会有采用国密算法的区块链应用出现. 一.SM1 ...
- 朝花夕拾,帮三年前的自己改bug
三年前,滨海之边马上毕业的老少年 经过几天半死不活的思考之后决定干前端 那个时候为了面试各种css属性js API背的是滚瓜烂熟 然后投简历,企业要项目经验, 我没有工作我哪来的项目经验啊 没人会管你 ...