git仓库删除某个历史提交

目录

问题

如果我们在开发过程中,存在一些验证性的提交或者失误性的提交,那么这些提交我们不想要了,怎么办?

情况1

如果是想要删除某个commitid之后的所有提交

那么git reset 可以满足你

shell 复制代码
git reset --hard 你要保留的最近的一次提交

比如

情况2

如果是想要删除commit记录中间的某次提交

那就需要用到git rebase (变基)命令

shell 复制代码
git rebase -i 要删除的提交的前一个commitid

比如

执行命令后会进入到 vim编辑界面,如下

上面pick commitid desc 的行显示的是自目标提交之后的所有提交,默认都是pick,你可以选择你不想要的分支,将pick 改为drop。
如果想要删除某几个分支,这里可以选择对应的行,都改为drop即可

vim 默认是预览模式,英文输入法,键入i,进入插入模式,就可以修改了

然后esc,退出插入模式
键入SHIFT+:
键入wq,(表示write&quit,保存退出)

最后,强行推送到远端分支即可

shell 复制代码
git push --force origin feature/xxx
相关推荐
goodspeed2 天前
Git Worktree:多分支并行开发的利器
git·github
雮尘3 天前
让 AI Agent 高效并行开发的命令-git worktree
人工智能·git·agent
南果梨4 天前
OpenClaw 完整教程!从安装到使用(官方脚本版)
前端·git·开源
Selicens5 天前
git批量删除本地多余分支
前端·git·后端
闲云一鹤6 天前
Git LFS 扫盲教程 - 你不会还在用 Git 管理大文件吧?
前端·git·前端工程化
vibecoding日记9 天前
为什么我就想要「线性历史 + Signed Commits」,GitHub 却把我当猴耍 🤬🎙️
git·编程工具
程序员小崔日记9 天前
如何将代码轻松上传到 Gitee?Git 使用全攻略!
git·gitee·上传
Bigger10 天前
为什么你的 Git 提交需要签名?—— Git Commit Signing 完全指南
git·开源·github
DianSan_ERP11 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet