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,因为它最安全,保留所有修改内容!

相关推荐
福如意如我心意10 小时前
git清除仓库敏感文件并同步至远端的操作
git
Brilliantwxx14 小时前
【Linux】 开发|Git 版本控制与 gdb/cgdb 调试
linux·笔记·git
.Hypocritical.1 天前
Git 全套实操|配置 /.gitignore/ 分支合并 / 冲突解决 /git stash 完整教程
git
来日方长。。。。long1 天前
Hermes Agent橙皮书共读|第三篇:保姆级实战部署|本地/VPS从零搭建Hermes
ide·git·hermes
其实防守也摸鱼2 天前
VS Code Git 工作树:解锁多分支并行开发新体验
数据库·git·安全·oracle·架构·自动化
ERD Online2 天前
我们怎么设计 good first issue:让第一个 PR 两小时内合入
数据库·git·后端·开源·issue
Python私教2 天前
Codex 自动写 Commit 够安全吗?一套证据化 Git 提交流程
人工智能·git·后端
果果燕2 天前
实习笔记(一):NFS、Samba、VNC、Git、CMake、systemd、内核、交叉编译
linux·arm开发·c++·笔记·git
美味蛋炒饭.2 天前
Git 版本控制(下)
开发语言·git·学习·总结·后端开发
互联网中的一颗神经元2 天前
09 — .git 地图:打开那个隐藏文件夹
大数据·git·elasticsearch