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 是最简单直接的方法,适用于本地提交的删除。

相关推荐
yanlaifan2 小时前
git clone时候指定换行符
git
小小安于乱6 小时前
解决IDEA的git插件pull代码冲突但右下角不提示消息问题
java·git·intellij-idea
ITKEY_8 小时前
git 命令行操作回退到指定版本
git
New_Horizons66610 小时前
Git 操作(使用git-commit-template)
git
慕容引刀13 小时前
或许你真的需要这个Git神器:让团队提交文案终于对齐了
人工智能·git·vscode·自然语言处理·github
jjh+++(求关注版)14 小时前
git-命令速查清单
git
yanlaifan1 天前
git版本管理工具中的回车换行转换逻辑
git
小僧景贤2 天前
【零门槛入门】嵌入式新手极简 Git 上手教程
git·固件开发·嵌入式版本管理
克里斯蒂亚诺更新2 天前
云效和IDEA关于git的相通使用
git