【经验】Git|如何删除错误的commit?(存在大文件无法push的commit、不需要的commit等情况、清除所有commit的情况)
2024/04/24说明:这篇暂时修改为粉丝可见,因为正在冲粉丝量,等到我弄完了粉丝量的要求,我就改回来!不方便看到全文的小伙伴不好意思!!
情况一:尚未推送或无法推送
如果你在本地多次提交了commit,但是其中有一个commit交错了、或者无法推送,
就像下面这张图这样:

你可以安装以下步骤操作。
通过
git log想清楚自己需要切换到哪一个commit状态,查看commit id:# 查看git记录(能看到每次操作的id):
git log
将仓库的状态恢复到能够正常提交的状态/需要删除的状态的上一个commit状态(
--soft参数会保证恢复后你的文件夹内容保持不变):git reset --soft <无法上传的那次的上一个的id>
注:id输入6位以上就差不多可以了,多输入几位也行,不用全选
注:git reset 有三种模式:–soft、–hard和不加参数。- –soft是保留工作区的内容和add提交,只是切换指针
- –hard是什么都不保留
- 不加参数是保留工作区的内容但是不保留add提交
在其他情况下,你也可以选择使用其他的参数。
检查当前Git的状态,尝试push:
# 可以看到完整的修改记录:
git status
# 重新提交commit
git commit -m "xxxxxx"
# 尝试push
git push
如果你无法理解以上文字描述以及命令行操作的话,也可以看视频描述,更具体一些,当我还是小白的时候这个视频帮助我圆满解决了这个问题:《从零开始的 Git 生活》Lesson 8 Git 中的后悔药.bilibili.全栈港。
情况二:已经推送
注:最好别用
git revert撤销提交,有点难用。
如果你不小心已经把错误的 commit 推上去了,也不要紧。
与第一种情况一致,首先,本地执行情况一中提到的三个步骤,回到需要的commit状态。
最后推送时使用强制推送:
git push -f
情况三:想要清除所有的commit记录,只保留一个
情况描述:删库跑路 or 抹杀开发过程 or 保护隐私必备。
首先在 github 网页上或者使用 git log 查看第一个 commit 的 id,然后运行:
git reset --soft <第一个 commit 的 id>
git commit --amend
这两行指令的含义是:
- 将当前分支的状态切换到第一个提交中,并保留本地的修改以及暂存区的设置;
- 将现在的暂存区的内容直接 amend 到前一个提交(在这里指的就是第一个 commit)。
运行这两行指令之后,将会弹出一个新的编辑框,要求填写 commit message。默认的 commit message 就是你的第一个提交的 commit 信息,如果你需要修改,就修改一下。

这一部分的操作很简单也很直观,不过会有人使用 rebase 做这个操作,为了描述为什么不使用 rebase,我添加了一些详细分析。为控制篇幅,我将详细的所有三种方案以及不使用 rebase 的原因写在了另一篇博文里,欢迎阅读:【经验】Git|如何将仓库中所有的 commit 合成一个?又名,如何清除所有 git 提交记录?
本账号所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_46106285/article/details/124744328。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
【经验】Git|如何删除错误的commit?(存在大文件无法push的commit、不需要的commit等情况、清除所有commit的情况)的更多相关文章
- 记一次使用commit提交大文件无法推送到远程库解决问题过程及git rebase使用
记一次使用commit提交大文件无法推送到远程库解决问题过程及git rebase使用 目录 大文件无法push到远程仓库 问题 commit的大文件无法push到远程库解决办法 git filter ...
- 删除Git记录里的大文件
删除Git记录里的大文件 仓库自身的增长 大多数版本控制系统存储的是一组初始文件,以及每个文件随着时间的演进而逐步积累起来的差异:而 Git 则会把文件的每一个差异化版本都记录在案.这意味着,即使你只 ...
- 记一次删除Git记录中的大文件的过程
app/test/target/ #查看大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/ ...
- git如何删除远程仓库的某次错误提交
git如何删除远程仓库的某次错误提交 如果远程仓库,能ssh访问,那就跟本地没什么区别 reset命令有3种方式 git reset --mixed 此为默认方式,不带任何参数的git res ...
- 如何删除错误提交的 git 大文件
早上小伙伴告诉我,他无法拉下代码,我没有在意.在我开始写代码的时候,发现我的 C 盘炸了.因为我的磁盘是苏菲只有 256G 放了代码就没空间了,于是我查找到了原来是我的代码占用了居然有 2000+M ...
- git push报错大文件,删除后重新commit依然报错
git push报错: github不能上传大文件,按道理删掉重新提交就行了 可是删掉后,git add -A,再git commit,再git push,依然报错 后来我想明白了 github上传时 ...
- git push提交报错,提示文件过大,且去掉大文件也报同样的错误
错误原因: 大文件存在没有被提交的commit记录里面: 解决方案: 删除有大文件的commit记录即可 移除大文件的正确姿势 $ git rm --cached giant_file(文件名) # ...
- Git从库中移除已删除大文件
写在前面大家一定遇到过在使用Git时,不小心将一个很大的文件添加到库中,即使删除,记录中还是保存了这个文件.以后不管是拷贝,还是push/pull都比较麻烦.今天在上传工程到github上,发现最大只 ...
- git 彻底删除历史记录中的大文件
Reference 大家一定遇到过在使用Git时,不小心将一个很大的文件添加到库中,即使删除,记录中还是保存了这个文件.以后不管是拷贝,还是push/pull都比较麻烦. === 删除大文件方法 方法 ...
- 【git】删除某个文件的所有历史记录,批量删除远程分支
删除git某个文件的所有历史记录 git的目的就是版本控制,记录每一个版本的变动.然而有的时候我们往往希望从版本库中彻底删除某个文件,不再显示在历史记录中.例如不小心上传了一堆错误的文件,或者不小心上 ...
随机推荐
- [BZOJ3160] 万径人踪灭 题解
首先正难则反,想到答案即为满足第一条要求的回文子序列数量,减去回文子串数量.回文子串数量 \(hash+\) 二分即可,考虑前半部分. 假如我们将一个回文子序列一层层剥开,就会发现它其实是由多个相同的 ...
- [BZOJ3771] Triple 题解
<关于贫穷的樵夫拥有 40000 把斧头这件事>. 相当于是多项式乘法,但是得带容斥,具体自己看代码吧. #include<bits/stdc++.h> using names ...
- Deepseek学习随笔(9)--- 清华大学发布Deepseek赋能职场(附网盘链接)
作为一名职场人,在工作中常常面临效率瓶颈:如何快速生成高质量内容?如何高效处理复杂任务?这些问题在接触了<清华大学-DeepSeek赋能职场>这份文档后,得到了全新的解答.这份由清华大学新 ...
- dx12学习之旅-
记录一下,第一篇博客2024年7月26日下午. 计划在毕业后从事游戏开发的工作,现在在学习龙书dx12,平时会写一些对龙书内容上的一些理解.在读完全书之后,会考虑进行一次龙书相关的总结,不过这应该要很 ...
- 面试题10- I. 斐波那契数列
地址:https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof/ <?php /** 写一个函数,输入 n ,求斐波那契(Fibona ...
- Selenium WebDriver上创建 WebDriver测试脚本
本文实现一个WebDriver测试脚本,介绍WebDrive的常用命令.UI元素定位的策略以及在脚本中的使用,还有Get命令. 你将学到: 脚本创建 代码走查 测试执行 定位Web元素 ...
- Manjora配置记录
22/9/12 目前的启动项有3:Windows Boot Manager.Manjaro.UEFI OS.其中UEFI OS 和 Manjaro 进入后内容相同:Windows下检测不到Manjar ...
- TypeScript 为什么使用 Go 而不是 Rust 重写 ?官方回应来了
TypeScript官推最近宣布他们正在移植到 Go,速度已经提高了 10 倍之多. 作为以性能为代表的另一语言Rust,人们自然会疑惑为什么没有选Rust语言重构呢?为方便大家快速理解,我用Deep ...
- 第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp
第十八届全国大学生信息安全竞赛暨第二届"长城杯"铁人三项赛web方向部分wp hello_web 查看源代码发现有两个文件,访问一下 Tips是phpinfo 里面可以看到disa ...
- helm install 从多种源进行安装
Helm 提供了多种方法来从不同的源安装 charts.以下是一些常见的安装方法: Helm官方仓库 从 Helm 官方仓库(Helm Hub)安装:Helm Hub 是 Helm 官方维护的一个公共 ...