【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 小时前
CANN 算子生态的底层安全与驱动依赖:固件校验与算子安全边界的强化
大数据·数据库·安全
Coder个人博客12 小时前
Linux6.19-ARM64 mm mmu子模块深入分析
大数据·linux·车载系统·系统架构·系统安全·鸿蒙系统
何中应13 小时前
使用SSH地址拉取远程仓库代码报下面的错误
git
何中应13 小时前
Git本地仓库命令补充
git
sun00770015 小时前
执行repo sync -c -d -j4以后,提交未git push的代码看不到了。要怎么恢复?
git
财经三剑客17 小时前
AI元年,春节出行安全有了更好的答案
大数据·人工智能·安全
岁岁种桃花儿17 小时前
Flink CDC从入门到上天系列第一篇:Flink CDC简易应用
大数据·架构·flink
TOPGUS17 小时前
谷歌SEO第三季度点击率趋势:榜首统治力的衰退与流量的去中心化趋势
大数据·人工智能·搜索引擎·去中心化·区块链·seo·数字营销
胖虎118 小时前
Git 一个本地仓库同时推送到两个远程仓库(详细教程)
git·多远程仓库·双远程仓库·git双远程·git备份
2501_9336707918 小时前
2026 高职大数据与会计专业零基础能考的证书有哪些?
大数据