git回退代码

要将提交如: 748c949 回退到未记录状态(即撤销这次提交但保留修改内容),有以下几种方法:

方法一:git reset --soft(推荐)

bash 复制代码
git reset --soft HEAD~1

或者指定具体的提交:

bash 复制代码
git reset --soft 748c949^

效果:

• 撤销提交,但保留所有修改内容在暂存区(staged)

• 提交记录被移除,但文件更改仍然存在

方法二:git reset --mixed(默认)

bash 复制代码
git reset HEAD~1

或者:

bash 复制代码
git reset 748c949^

效果:

• 撤销提交,保留修改内容在工作区(unstaged)

• 提交记录被移除,文件更改存在但需要重新 git add

方法三:git reset --hard(危险!)

bash 复制代码
git reset --hard HEAD~1

效果:

• ⚠️ 完全删除提交和所有修改内容

• 文件会回到提交前的状态,所有更改都会丢失

• 不推荐使用,除非你确定要丢弃所有修改

✅ 推荐使用步骤

1. 使用 soft reset(保留修改在暂存区)

bash 复制代码
git reset --soft HEAD~1

2. 检查状态

bash 复制代码
git status

你会看到之前的修改仍然在暂存区,可以重新提交。

3. 如果需要重新提交

bash 复制代码
git commit -m "新的提交信息"

📊 三种 reset 模式对比

模式 命令 提交历史 暂存区 工作目录
--soft git reset --soft HEAD~1 移除提交 保留修改 不变
--mixed git reset HEAD~1 移除提交 取消暂存 保留修改
--hard git reset --hard HEAD~1 移除提交 清除 删除所有修改

🔍 验证结果

撤销后可以查看日志确认:

bash 复制代码
git log --oneline

之前的提交 748c949 应该不再显示在最新历史中。

推荐使用 git reset --soft,因为它最安全,保留所有修改内容!

相关推荐
weixin_462446237 小时前
Git 本地忽略 application-dev.yml 的最佳实践:不提交 .gitignore,不影响团队协作!
git
无限进步_14 小时前
面试题 02.02. 返回倒数第 k 个节点 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
2401_8590490814 小时前
git submodule update --init --recursive无法拉取解决
前端·chrome·git
是店小二呀19 小时前
Git 深度学习笔记:从初始化到核心操作机制解析
笔记·git
xlq2232219 小时前
11.git_gbd
git
CCC:CarCrazeCurator19 小时前
IDE 与编程语言区分介绍
git·github
Q741_14720 小时前
Git 基础操作速查手册 场景模拟
git·学习·版本控制·总结
玉梅小洋1 天前
Git 使用技巧——查看 Commit 修改文件的概要
git·github
Howie Zphile2 天前
Git 拉 NocoBase 2.0 beta(next 分支),并“每天自动更新 + 自动编译 + 自动重启”
大数据·git·elasticsearch
吕司2 天前
Git分支管理
git