【git】 撤回一个本地提交

要撤回一个本地提交,有几种常见的方法

1. 撤销上一次提交但保留更改(最常用)

复制代码
# 撤销提交,但保留所有文件更改在工作区
git reset --soft HEAD~1
复制代码

2. 完全撤销上一次提交和所有更改

复制代码
# 撤销提交,并删除所有文件更改(慎用!)
git reset --hard HEAD~1
复制代码

3. 撤销提交但保留更改在暂存区

复制代码
# 撤销提交,但保留文件更改在暂存区
git reset --mixed HEAD~1  # --mixed 是默认选项
复制代码

4. 撤销指定次数的提交

复制代码
# 撤销最近3次提交,但保留更改在工作区
git reset --soft HEAD~3

# 撤销最近3次提交,并删除所有更改
git reset --hard HEAD~3
复制代码

5. 使用 revert(创建反向提交,推荐用于已推送的提交)

复制代码
# 创建一个新的提交来撤销之前的提交
git revert HEAD

# 撤销指定提交(通过 commit hash)
git revert <commit-hash>
复制代码

6. 查看提交历史后再撤销

复制代码
# 先查看提交历史
git log --oneline -5

# 然后撤销到指定提交(保留更改)
git reset --soft <commit-hash>

# 撤销到指定提交(删除更改)
git reset --hard <commit-hash>
复制代码

实用示例

假设你有以下提交历史:

复制代码
a1b2c3d (HEAD) 第三次提交
e4f5g6h 第二次提交
i7j8k9l 第一次提交
复制代码

场景1:想修改最后一次提交的内容

复制代码
git reset --soft HEAD~1
# 修改文件
git add .
git commit -m "新的提交信息"
复制代码

场景2:彻底删除最后一次提交

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

场景3:已推送到远程的提交需要撤销

复制代码
git revert HEAD
git push origin <branch-name>
复制代码

重要提醒

  1. 谨慎使用 --hard:这会永久删除工作区和暂存区的更改

  2. 已推送到远程的提交 :使用 reset --hard 后强制推送需要谨慎,最好使用 revert

  3. 备份重要更改:不确定时先备份或创建分支




相关推荐
郑州光合科技余经理1 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
我命由我123451 小时前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
SelectDB3 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
SelectDB3 小时前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析
vx-程序开发3 小时前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django
当下新鲜事3 小时前
脱硫脱硝塔动力系统科普:四方DL500变频器工作原理解析
大数据·运维·物联网·业界资讯
珠海西格电力3 小时前
零碳园区管理系统“智慧大脑”功能对园区运营成本的影响有哪些?
大数据·人工智能·安全·系统架构·能源
发量惊人的中年网工4 小时前
2026年DDoS防护方案怎么选?从攻击响应、清洗位置到成本账单,解析全球高防方案
大数据·网络·安全·ddos
Elasticsearch4 小时前
jina-ocr-v1:在低成本 GPU 上实现更快速的文档解析
elasticsearch
深海鱼肝油ya5 小时前
向量数据库Elasticsearch(四)搜索文档——各种方式
人工智能·elasticsearch·向量数据库·es搜索文档·只能体·非结构化数据库