【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. 备份重要更改:不确定时先备份或创建分支




相关推荐
南方略咨询7 分钟前
南方略咨询:环保行业进入深水区,营销管理能力正在拉开企业差距
大数据·人工智能
RPA机器人就选八爪鱼30 分钟前
RPA在银行IT运维领域的应用场景与价值分析
大数据·运维·数据库·人工智能·机器人·rpa
嘉禾望岗5031 小时前
spark算子类型
大数据·分布式·spark
CICI131414131 小时前
藦卡机器人:让焊接更洁净、更精准、更智能
大数据·人工智能
一直在追1 小时前
别再用 Java 多线程思维写 Python 了!Asyncio 才是 LLM 高并发的王道
大数据
短视频矩阵源码定制1 小时前
矩阵系统源头厂家
大数据·人工智能·矩阵
Elasticsearch1 小时前
Elastic 即代码:自动化的不只是基础设施
elasticsearch
Linux Huang1 小时前
spring注册组件/服务无效,问题排查
大数据·服务器·数据库·spring
天竺鼠不该去劝架2 小时前
传统财务管理瓶颈:财务机器人如何提升效率
大数据·数据库·人工智能
WZGL12302 小时前
“近邻+数智”:解码智慧养老的温情答案
大数据·人工智能·科技·生活·智能家居