git --- reset 删除提交

git --- reset 删除提交

如果要删除最近的几个提交,可以使用 git reset 命令

  • 但是删除最近的提交最好的方法是使用revert, 而不是本篇文章使用的reset

保留修改

git reset --soft HEAD~N

删除提交历史,但保留工作区(已修改的文件)和暂存区(git add 的内容)的修改。

c 复制代码
# 删除最近1个提交(保留修改)
git reset --soft HEAD~1

# 删除最近3个提交(保留修改)
git reset --soft HEAD~3

适用场景:提交信息写错了,想重新提交;或者多个小提交想合并后重新提交。

清空暂存区

bash 复制代码
git reset HEAD~N

删除提交历史,保留工作区修改,但清空暂存区(需要重新 git add)

c 复制代码
# 删除最近1个提交(清空暂存区)
git reset HEAD~1  # 等同于 git reset --mixed HEAD~1

适用场景:想重新整理暂存区的文件,再重新提交。

彻底丢弃修改(危险)

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

删除提交历史,同时丢弃工作区和暂存区的所有修改(无法恢复)。

c 复制代码
# 删除最近1个提交(彻底丢弃修改)
git reset --hard HEAD~1
适用场景:确定这些修改完全不需要,想回到之前的干净状态。

删除中间的提交(本地)

如果要删除历史中的某个特定提交(非最近的),需要使用 git rebase -i(交互式变基)

操作步骤

  1. 查看提交历史,找到要删除的提交的前一个提交 ID:
bash 复制代码
git log --oneline
# 示例输出:
# a1b2c3d (HEAD) 最近的提交
# d4e5f6g 要删除的提交 ← 目标
# g7h8i9j 更早的提交
  1. 执行交互式变基,范围是从要删除的提交的前一个开始:
bash 复制代码
# 格式:git rebase -i <要删除的提交的前一个提交ID>
git rebase -i g7h8i9j
  1. 在编辑器中删除目标提交:编辑器会显示提交列表,将目标提交行的 pick 改为 drop(或直接删除该行):
bash 复制代码
# 原内容:
pick d4e5f6g 要删除的提交
pick a1b2c3d 最近的提交

# 修改为(二选一):
drop d4e5f6g 要删除的提交  # 方法1:改为 drop
pick a1b2c3d 最近的提交

# 或直接删除目标提交行(方法2):
pick a1b2c3d 最近的提交
  1. 保存退出编辑器,Git 会自动完成变基,目标提交被删除

删除远程仓库的提交

如果提交已经推送到远程仓库(如 GitHub/GitLab),需要强制推送来覆盖远程历史。

  • 先删除本地提交, 使用上述 git reset 或 git rebase -i 方法删除本地提交。
  • 强制推送到远程
bash 复制代码
# 方法1:基本强制推送(简单但风险较高)
git push -f origin <分支名>

# 方法2:安全强制推送(推荐,会检查远程是否有新提交)
git push --force-with-lease origin <分支名>
相关推荐
codigger40 分钟前
Git 三区域模型:把 add、commit、reset、merge 一次讲透
git·github·编程·编程语言
水饺编程1 小时前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
idanzk1 小时前
Git 推送 GitHub 报 SSL_READ /src refspec main 不匹配 完整踩坑记录
git·github·ssl
星恒随风3 小时前
Linux开发工具详解(二):Git版本控制、GitHub协作与GDB调试实战
linux·笔记·git·学习·github
寺中人21 小时前
Xshell 完全入门指南:从安装到实战,远程连接+文件传输+会话管理全拆解
git·ssh·github·php·远程连接·xshell·运维工具
酬谢神明则必安1 天前
git学习记录01
linux·git·学习
lingchen19061 天前
版本控制 Git源代码项目管理
git
虫无涯1 天前
Coverity 如何结合 GJB8114-2013使用?
git·单元测试·嵌入式测试·coverity·静态扫描
喵本喵叁肆1 天前
Git 深度解读:从对象模型到分支指针,把版本控制的内核讲透
git
阿钱真强道2 天前
课时00 嵌入式技术应用设计实训 | 开发环境搭建与开发板认识
git·hal库·keil·vs code·开发环境搭建·stm32f103·st-link