git提交错了?别慌,直接删除提交记录 |
您所在的位置:网站首页 › git取消本地的commit › git提交错了?别慌,直接删除提交记录 |
👉 这是一个或许对你有用的社群 🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 《项目实战(视频)》:从书中学,往事中“练” 《互联网高频面试题》:面朝简历学习,春暖花开 《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题 《精进 Java 学习指南》:系统学习,互联网主流技术栈 《必读 Java 源码专栏》:知其然,知其所以然 👉这是一个或许对你有用的开源项目 国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。 功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能: Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud 视频教程:https://doc.iocoder.cn 【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 来源:juejin.cn/post/7355692365330792488 为什么要删除提交历史 使用git revert撤销提交 使用git reset撤销提交 总结 为什么要删除提交历史前几天产品提了个很扯淡的需求,我在代码了进行了吐槽.... ![]() 要命的是我不下心进行了代码提交: ![]() 我们的远程仓库大家都能看见的 ![]() 这要是被其他人发现就惨了!当务之急,我必须立刻马上删除 这一条提交记录!! 于是,我打开百度,搜索到两个救命关键词:git revert 和git reset !这两个命令都有撤销操作的功能! 基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能 项目地址:https://github.com/YunaiV/ruoyi-vue-pro 视频教程:https://doc.iocoder.cn/video/ 使用git revert撤销提交revert的英文释义是回复、恢复(到原来的状态) 作用git revert 是 Git 中用于撤销一个或多个提交的命令,但是会保留历史记录。它创建一个新的提交,该提交是对原提交的相反操作,以撤销原提交的更改。通过 git revert 撤销提交,可以保持历史记录的完整性,不会修改已经共享的提交历史。 语法撤销单个提交: git revert这会创建一个新的提交,用于撤销指定的提交 的更改。 撤销多个提交: git revert ...这会为每个指定的提交创建一个新的撤销提交。 撤销最近的提交: git revert HEAD撤销某个范围内的提交: git revert ^..这会撤销从 (不包括)到 (包括)范围内的所有提交。 撤销提交时,Git 会打开一个文本编辑器,让你输入撤销提交的信息。你可以修改默认的提交信息,然后保存并关闭编辑器。 撤销实操不管3721,我们先试着用它撤销下提交试试。 先试用git log(其他可视化面板也行)找到要撤销的commit哈希码 b1b56b50a0859556623283946972e495d4a42fc1![]() 然后,执行单个文件撤销命令 git revert b1b56b50a0859556623283946972e495d4a42fc1执行命令后,控制台会出现vim编辑器,让我们为本次更改提交说明 ![]() vim编辑器小技巧 进入编辑模式:进入编辑模式的方式取决于当前编辑器的模式。通常情况下,按下 i 键可以进入插入模式,允许你编辑文本。 编辑文本:在插入模式下,你可以编辑文本。使用方向键或者 h, j, k, l 键移动光标。 退出编辑模式:编辑完成后,按下 Esc 键退出插入模式。 保存并退出:在退出编辑模式后,输入 :wq 并按下 Enter 键,可以保存并退出编辑器。 放弃更改并退出:在退出编辑模式后,输入 :q! 并按下 Enter 键,可以放弃更改并退出编辑器。 我们点击i输入提交说明【删除错误提交】,然后点击ESC退出编辑模式,最后输入:wq保存并退出。 退出vim编辑器后,直接输入git push 推送代码! 我们来看看效果: 代码里上次提交的内容确实没了! 第一次错误提交时的代码内容 ![]() revert后的代码内容 ![]() 但是,git的推送历史上有啊!! ![]() 这下我算明白了git revert的作用了:用于撤销一个或多个提交的命令,但是会保留历史记录 ! 这显然不是我的意图,我想做的是删除git提交历史!删除!不保留任何痕迹呢种!只能试试git reset了! 基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能 项目地址:https://github.com/YunaiV/yudao-cloud 视频教程:https://doc.iocoder.cn/video/ 使用git reset撤销提交凭借我初中毕业的水平,我一眼就明白了reset的含义:重置!现在,我们先看看git reset的作用。 作用git reset 用于移动 HEAD 指针并可选地更改暂存区和工作目录的状态。它是一个非常强大的工具,常用于撤销提交、取消暂存文件、修改提交内容等操作。 语法撤销提交,保留修改 git reset --soft HEAD~1这会将 HEAD 指向的分支的最新提交撤销掉,并保留所有更改在工作目录中。这样你就可以重新提交,并修改提交信息。 撤销提交,取消暂存的文件 git reset HEAD~1这会将 HEAD 指向的分支的最新提交撤销掉,并将暂存区的文件取消暂存,但保留在工作目录中。这样你可以重新选择要暂存的文件。 撤销提交,丢弃修改 git reset --hard HEAD~1这会将 HEAD 指向的分支的最新提交撤销掉,并丢弃所有更改,包括暂存区和工作目录中的文件。这样你就可以完全回到上一个提交的状态。 将 HEAD 指针移动到指定的提交 git reset --hard这会将 HEAD 指针移动到指定的提交,并丢弃所有更改。这可以用来回滚到历史提交状态 撤销实操由于本地没有其他修改,暂存区也没有文件,因此,使用 git reset HEAD~1但是,我们刚才的误操作,导致有两条不应该出现的操作记录 ![]() 所以,我们HEAD指针应该向下移动2个 git reset HEAD~2命令行输入后,我们就会发现本地代码已经恢复到没有提交这两个记录前的状态了! 但云端的记录还在 ![]() 那如何删除云端的记录呢?很简单,将本地仓库的代码强推到远端仓库覆盖掉就行!(本地仓库已经是未提交两个错误信息时的状态了) 最后,我们使用下面的命令将本地代码强行覆盖云端 git push --force执行完后,就是见证奇迹的时刻 ![]() 再看看git上 ![]() 也没有,nice!! 重要提示使用 --force 选项将覆盖远程仓库的提交历史,这意味着远程仓库的历史将会变为你本地仓库的历史。这是非常危险 的操作!!一定要确保本地代码和远程代码是相关的!!一定要谨慎操作!! 注git push --force是下面命令的简写 git push origin --forcegit push origin --force 命令用于将本地分支推送到远程仓库,并且使用 --force 选项强制覆盖远程仓库中的提交历史。 git push: 将本地分支的提交推送到远程仓库。 origin: 指定远程仓库的别名。通常指向你克隆或者添加远程仓库时所使用的 URL。 : 要推送的本地分支的名称。 --force (或 -f): 强制推送选项。这会覆盖远程仓库的提交历史,即使本地分支的提交历史不是远程分支的子集也会强制推送。 总结git reset 用于移动分支的指针,可以修改提交历史,但不会创建新的提交;而 git revert 用于撤销先前的提交,并创建一个新的提交来保持提交历史的完整性。 通过本实例,你一定学会了使用git reset 加 git push --force的方法删除远程仓库的错误提交历史!如果有收获,记得收藏点赞哈~ 欢迎加入我的知识星球,全面提升技术能力。 👉 加入方式,“长按”或“扫描”下方二维码噢: 星球的内容包括:项目实战、面试招聘、源码解析、学习路线。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |