Git 删除指定提交记录操作指南

背景

需要删除以下两个提交记录:

  • 772074d5 - feat: 助手新手指引权限控制
  • e1f38bff - Revert "feat: 助手新手指引权限控制"

当前提交历史

bash 复制代码
ec514b25 Merge branch 'develop' of http://93.1.34.35:12000/aops-front/uatu into dev-8.19
772074d5 feat: ai助手新手指引权限控制
bf82914f feat: 添加服务目录路由配置和菜单入口
fd64b30a feat: 新增服务目录管理页面
b9b2d47c 列表支持自动搜索

操作方法

方法一:使用 git reset --hard(推荐,简单直接)

适用于:本地提交,未 push 到远程仓库

bash 复制代码
# 1. 查看提交历史,找到要保留的最后一个提交
git log --oneline -5

# 2. 假设你要保留 bf82914f,删除之后的所有提交
git reset --hard bf82914f

# 3. 确认提交历史
git log --oneline -5

说明

  • git reset --hard bf82914f 会将分支重置到 bf82914f 这个提交
  • 之后的所有提交(包括 772074d5e1f38bff)都会被删除
  • 工作区的文件也会恢复到 bf82914f 的状态

方法二:使用 git rebase -i(交互式,更灵活)

适用于:本地提交,需要选择性删除

bash 复制代码
# 1. 找到要删除的提交之前的那个提交
# 假设你要删除 772074d5 和 e1f38bff,它们之前的提交是 bf82914f

# 2. 启动交互式 rebase
git rebase -i bf82914f

# 3. 在打开的编辑器中,你会看到类似这样的内容:
# pick 772074d5 feat:  助手新手指引权限控制
# pick e1f38bff Revert "feat:  助手新手指引权限控制"

# 4. 将这两行前面的 pick 改为 drop,或者直接删除这两行
# 保存并退出编辑器

# 5. 确认提交历史
git log --oneline -5

方法三:使用 git revert + git rebase(更安全)

适用于:已经 push 到远程仓库的情况

bash 复制代码
# 1. 先 revert 这两个提交
git revert --no-edit e1f38bff
git revert --no-edit 772074d5

# 2. 然后用 rebase 压缩这些提交
git rebase -i bf82914f

# 3. 在编辑器中,将 revert 提交和原始提交都改为 drop
# 保存并退出

实际操作示例

在本次操作中,我执行了以下命令:

bash 复制代码
# 查看提交历史
git log --oneline -8

# 找到要保留的最后一个提交 bf82914f
# 重置到该提交,删除之后的所有提交
git reset --hard bf82914f

# 确认结果
git log --oneline -5
git status

操作结果

操作前的提交历史

bash 复制代码
e1f38bff Revert "feat: 工单助手新手指引权限控制"
ec514b25 Merge branch 'develop' ...
772074d5 feat: 工单助手新手指引权限控制
bf82914f feat: 添加服务目录路由配置和菜单入口
fd64b30a feat: 新增服务目录管理页面

操作后的提交历史

bash 复制代码
bf82914f feat: 添加服务目录路由配置和菜单入口
fd64b30a feat: 新增服务目录管理页面
b9b2d47c 工单列表支持自动工单搜索

删除的提交

  • 772074d5 - feat: 助手新手指引权限控制
  • e1f38bff - Revert "feat: 助手新手指引权限控制"

⚠️ 重要警告

如果提交已经 push 到远程仓库

  1. 不要使用 git reset --hard

    • 这会导致远程仓库的历史与本地不一致
    • 其他协作者 pull 时会出现问题
  2. 应该使用 git revert

    • 创建新的提交来撤销更改
    • 保留历史记录的完整性
  3. 或者使用 git push --force(危险操作)

    • 需要团队所有成员协调
    • 可能导致其他人的本地提交丢失

安全建议

  • ✅ 如果只是本地提交,使用 git reset --hard
  • ✅ 如果已经 push,使用 git revert
  • ❌ 不要在公共分支上使用 git push --force
  • ❌ 不要在团队协作时随意修改提交历史

常用 Git 命令

bash 复制代码
# 查看提交历史
git log --oneline -10

# 查看提交历史图形
git log --oneline --graph -10

# 重置到指定提交
git reset --hard <commit-hash>

# 交互式 rebase
git rebase -i <commit-hash>

# 撤销提交(创建新的提交)
git revert <commit-hash>

# 查看当前状态
git status

总结

本次操作成功删除了两个不需要的提交记录:

  1. 助手权限控制提交
  2. 对应的 revert 提交

使用 git reset --hard 是最简单直接的方法,适用于本地提交的删除。

相关推荐
墨白曦煜21 小时前
穿透 IDE 的障眼法:Git 四大工作区与核心数据流转解析
ide·git
idealzouhu1 天前
深入 Git 账户模型:从提交身份到 SSH 多账户隔离的完整实践
git·ssh
是2的10次方啊1 天前
误推 master 该 revert 还是 reset?撤销与补 MR 流程
git
菠萝加点糖2 天前
Git 删除远程文件、本地保留并取消跟踪
git
理智.6292 天前
Git 工具使用之项目版本回退与修改备份:stash、reset、reflog 常用指令详解
git·gitee·github
妙码生花2 天前
GIT 提交规范
git
云雀衔光2 天前
多个 MCP Server 怎么编排:数据库 / Redis / Git / 飞书一把梭
java·数据库·人工智能·redis·git·语言模型·飞书
Java后端的Ai之路2 天前
Git pull弹出vim编辑器完整排查指南
开发语言·人工智能·git·编辑器·vim
云泽8082 天前
Git 版本控制系统(下):从 .git 目录结构到冲突解决机制详解
大数据·git·elasticsearch
麻辣布丁3 天前
Git冲突原因与解决方法全解
大数据·git·elasticsearch