结论先行

使用 git reset --hard <commit_id> 可强制将本地代码、暂存区、工作目录彻底回退到指定提交状态,但会丢弃目标提交之后的所有提交记录(需谨慎操作,尤其涉及远程仓库时)。

文章持续更新,可以微信搜一搜「 半个脑袋儿 」第一时间阅读


详细说明

一、git reset 的核心作用

git reset 的本质是移动当前分支的 HEAD 指针到目标提交,根据参数不同(--hard/--soft/--mixed)决定是否修改工作目录和暂存区:

  • --hard:强制回退代码,工作目录、暂存区、提交历史全部回退到指定提交(最彻底,风险最高)。
  • --soft:仅移动 HEAD 指针,工作目录和暂存区代码不变(适合重新提交)。
  • --mixed(默认):移动 HEAD 指针并重置暂存区,但保留工作目录的修改(需重新 git add)。

二、git reset --hard 操作步骤
  1. 定位目标提交

    git log --oneline  ## 查看提交历史,复制目标提交的哈希值(前7位即可)
    ## 或使用图形化工具(如 `gitk`、IDE内置功能)
    • 若提交已被覆盖,可通过 git reflog 查看所有操作记录,找回丢失的提交哈希。
  2. 执行回退操作

    git reset --hard a1b2c3d  ## 替换为实际提交哈希
    • 效果:本地代码立即变为目标提交的状态,之后的提交从历史中移除(但未物理删除,可通过 git reflog 恢复)。
  3. 同步远程仓库(谨慎)

    git push -f origin <branch_name>  ## 强制覆盖远程分支
    • 风险:若他人已拉取旧提交并基于其开发,强制推送会导致代码混乱。

三、适用场景
  • 场景 1:彻底丢弃本地未推送的提交(如实验性代码、错误提交)。
  • 场景 2:修复个人分支的历史提交(如敏感信息泄露、错误合并)。
  • 场景 3:回退到稳定版本后重新开发(需确保无协作依赖)。

四、注意事项
  1. 备份当前状态

    git checkout -b backup_branch  ## 创建临时分支备份当前代码
  2. 恢复误操作

    • 若误删提交,通过 git reflog 找到被重置的提交哈希,再次执行 git reset --hard <commit_id> 恢复。
  3. 避免公共分支使用

    • 对团队协作的 main/develop 等分支,优先使用 git revert 代替 git reset,避免历史记录断裂。
  4. 理解三种模式的区别

    模式 HEAD指针 暂存区 工作目录 典型用途
    --hard 移动 重置 重置 彻底回退代码
    --soft 移动 保留 保留 合并多个提交为一个
    --mixed 移动 重置 保留 部分撤销提交并重新整理

总结

git reset --hard高风险高回报的操作,能快速回退代码,但需严格遵循:

  1. 仅用于本地或私有分支。
  2. 操作前备份代码或创建临时分支。
  3. 理解 --hard 与其他模式的区别。
  4. 公共分支回退优先选择 git revert

Git Reset 彻底解析:--hard 模式操作步骤、风险与完整恢复指北的更多相关文章

  1. Git:上传GitHub项目操作步骤

    git教程:git详解.gitbook #首次上传步骤 首先在工程文件位置处右键git bash here 本地创建ssh key $ ssh-keygen -t rsa -C "your_ ...

  2. LSI 9211-8I阵列卡IR模式Update为IT模式操作步骤!

    以下是DOS系统环境下操作(也可以在windows.linux环境下,只要找到对应的tool就可以)相对应的tool官网可以下载 链接:https://www.broadcom.com/support ...

  3. git reset revert 回退回滚取消提交返回上一版本

    git reset revert 回退回滚取消提交返回上一版本 总有一天你会遇到下面的问题. (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你 ...

  4. git 远程仓库版本的回退以及git reset 几种常用方式记录

    由于 github push 了两个比较潦草的commit, 自己很不满意,又不想重新开vpn进行上传,所以找了一下相关的教程. 最后研究了一下,原理为先在本地还原到你想要的commit,然后强制pu ...

  5. 浅谈SQL Server中的事务日志(四)----在完整恢复模式下日志的角色

    简介 生产环境下的数据是如果可以写在资产负债表上的话,我想这个资产所占的数额一定不会小.而墨菲定律(事情如果有变坏的可能,无论这种可能性有多小,它总会发生)仿佛是给DBA量身定做的.在上篇文章介绍的简 ...

  6. git reset三种模式

    reset三种模式区别和使用场景 区别: --hard:重置位置的同时,直接将 working Tree工作目录. index 暂存区及 repository 都重置成目标Reset节点的內容,所以效 ...

  7. 撤销git reset soft head操作

    一不小心在eclipse的git库中执行了Reset Soft(HEAD ONLY)操作,不料界面中竟然没有找到撤销方法(于是心中五味俱全,经过一番折腾,无果还是回归Git本身),最终通过命令行,很快 ...

  8. [转]恢复 git reset -hard 的误操作

    转帖:http://hi.baidu.com/configuration/item/97fddeea252818d0eb34c964 有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 r ...

  9. 恢复 git reset -hard 的误操作

    有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 reset, rebase 和 merge.甚至一些很小的操作,例如删除一个分支,我都担心数据丢失. 不 久之前,我在做一些大动作(re ...

  10. Git commit/pull/push的操作步骤

    1.操作步骤需要严格执行如下顺序:commit->pull->push 2.commit:将代码提交到本地仓库. 3.pull:将远程仓库代码同步到本地仓库.如遇冲突,解决冲突,重复com ...

随机推荐

  1. JavaScript数组(包括上一笔记都是ECMAScript对象),BOM对象,DOM对象,html DOM Enent(事件)

    JavaScript数组(包括上一笔记都是ECMAScript对象),BOM对象,DOM对象,html DOM Enent(事件) 1.Arrary; var ret = new Arrary(1,2 ...

  2. 问一下,利用在线 DeepSeek 等 API 服务实现一个答题 APP

    简介 这是一个利用 Android 无障碍功能 + 悬浮窗 + 大模型的搜题应用 原理就是利用无障碍读取屏幕内容,然后通过悬浮窗来显示答案 众所周知我是一个学渣,所以在搜答案方面颇有成就 大概是在 4 ...

  3. flutter-TextField文本输入框 限制 数字键盘、输入小数点后两位

    关键代码 keyboardType: TextInputType.number, inputFormatters: [ FilteringTextInputFormatter(RegExp(" ...

  4. 川崎机器人维修kasawaki维护注意事项

    为确保川崎机械臂的正确安全操作.防止人员伤害和财产损失,请遵守下述方框符号表达的安全信息. --注意事项 在进行Kasawaki川崎机器人维修操作前,请注意如下事项以确保安全. 1. 在开始检查之前, ...

  5. 函数static的作用

    限制作用域和保持状态 ‌函数static的作用主要体现在限制作用域和保持状态两个方面.‌‌1 限制作用域 ‌静态全局变量‌:在全局变量前加上static关键字,该变量就被定义成为一个静态全局变量.这种 ...

  6. Typecho 引入 DPlayer

    想在文章中插入视频,尝试 iframe 和 video 标签后发现 m3u8 流会触发下载无法播放,用 hls 该问题后,碰到了 403 forbbiden.联想到前些天新浪图床加 referrer ...

  7. Flink学习(三) 批流版本的wordcount Scala版本

    批处理代码: package com.wyh.wc import org.apache.flink.api.scala._ /** * 批处理代码 */ object WordCount { def ...

  8. Week09_day05(Hbase的安装搭建)

    搭建完全分布式集群 HBase集群建立在hadoop集群基础之上,所以在搭建HBase集群之前需要把Hadoop集群搭建起来,并且要考虑二者的兼容性.现在就以5台机器为例,搭建一个简单的集群. 软件版 ...

  9. SM系列国密算法

    其中SM1.SM4.SM7.祖冲之密码(ZUC)是对称算法:SM2.SM9是非对称算法:SM3是哈希算法.目前,这些算法已广泛应用于各个领域中,期待有一天会有采用国密算法的区块链应用出现. 一.SM1 ...

  10. 朝花夕拾,帮三年前的自己改bug

    三年前,滨海之边马上毕业的老少年 经过几天半死不活的思考之后决定干前端 那个时候为了面试各种css属性js API背的是滚瓜烂熟 然后投简历,企业要项目经验, 我没有工作我哪来的项目经验啊 没人会管你 ...