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




相关推荐
清平乐的技术专栏30 分钟前
【Flink学习】(四)Flink 常用转换算子,数据流数据处理
大数据·flink
淘矿人10 小时前
Claude辅助DevOps实践
java·大数据·运维·人工智能·算法·bug·devops
SeaTunnel10 小时前
AI 让 SeaTunnel 读源码和调试过时了吗?
大数据·数据库·人工智能·apache·seatunnel·数据同步
WL_Aurora11 小时前
MapReduce【Shuffle-Combiner】
大数据·mapreduce
Mortalbreeze11 小时前
深度理解文件系统 ---- 从磁盘存储到内核存储
大数据·linux·数据库
Bechamz12 小时前
大数据开发学习Day36
大数据·学习
C-200212 小时前
基于 JumpServer 容器化部署 ES 集群
大数据·elasticsearch·搜索引擎
captain_AIouo12 小时前
降本增效突围,Captain AI助力Ozon商家提升盈利空间
大数据·人工智能·经验分享·aigc
黎阳之光14 小时前
视听融合新范式!黎阳之光打破视觉边界,声影协同赋能全域智慧管控
大数据·人工智能·物联网·算法·数字孪生
iiiiyu14 小时前
集合进阶(Map集合)
java·大数据·开发语言·数据结构·编程语言