【技巧】Git提交描述骂了领导,不会删除提交记录咋办!

简介: 本文以一次git提交失误的故事为背景,详细介绍了如何使用`git revert`和`git reset`两个命令来撤销错误提交。`git revert`用于撤销提交并创建新提交以保留历史记录,而`git reset`则通过移动HEAD指针来修改提交历史,不创建新提交。文章通过实例演示了具体操作步骤,帮助读者在遇到类似问题时能够从容应对。

前言

🍊缘由

Git提交错了?别慌,带你删除提交记录

🍍你想听的故事:

一个夜黑风高的夜晚,独自苦逼加班的狗哥默默搬砖,长时间的工作压迫,狗哥怒从心头起,恶向胆边生,稀里糊涂的将内心的愤怒写到项目注释及git提交描述中,并且push推送到了远程

清醒之后的狗哥,看到自己骚操作懊悔不已,但木已成舟,错误已犯。目前摆在狗哥面两条路:

一是降低我高傲的头颅,主动承认错误,曲意逢迎舔狗上线

二是剑走偏锋,通过狗哥强大的技术,抹平这愚蠢的失误

然而成年人不做选择题,狗哥两个全都要,当舔狗的同时,也要通过实力删除提交记录!

遂整理一下两个常用git命令:git revertgit reset,用于解决以上git尴尬问题的情况

『本故事纯属虚构如有雷同实属巧合』


🎯主要目标

实现2大重点

1.『git revert』命令详解
2.『git reset』命令详解

正文

🥦目标解析

1.『git revert』命令详解

① 作用

git revert 是 Git 中用于撤销一个或多个提交的命令,会保留历史记录

大白话解释:通俗理解吃了毒药(git commit提交)后,可以救命的解毒药(git revert),虽然可以挽救你的生命,但是会保留你吃毒药的疼痛感(历史记录)。就是能解决撤销项目注释的内容,但是撤销不了提交历史记录。

② 语法

撤销某一个提交

git revert <commit-hash>

撤销多个提交

git revert <commit-hash1> <commit-hash2> <commit-hash3>...

撤销最新提交

git revert HEAD

撤销范围内提交

git revert <commit-hash1>^..<commit-hash2>
③ 实例

上面命令没看懂,别急,来看看实操,一看就懂!

案例:撤销下图中注释提交

1. 找到commit-hash哈希码

git log 查看项目历史的 commit 记录,找到对应commit-hash哈希码

git log

🎯Tips:什么是commit-hash哈希码?

Git的commit-hash哈希码,也称为commit ID或简称为hash,是Git用来唯一标识每一次提交的一个40个字符的字符串。
这个哈希码具有以下特点:
唯一性:由于SHA-1算法的碰撞概率极低,所以几乎可以认为每个不同的提交都会得到一个独特的哈希值。即使是最微小的改动,也会生成一个新的哈希。
不可篡改:由于哈希值是根据提交的所有内容计算的,一旦提交被创建,其哈希码就不能改变。如果尝试修改提交,对应的哈希码也会改变,从而破坏了Git的完整性。

2. 执行git revert

执行单个文件撤销命令

git revert 924c11051733c547dc16008dcc396469029a2336

3.更改提交说明

使用vim语法进行录入提交说明,如果不知晓vim语法请百度一下

  1. 执行命令后,控制台会出现vim编辑器,我们需要更改提交说明
  2. 通过vim编辑器,【按住】键盘i,进入插入模式,并通过【键盘上下/鼠标滚轮】找到最下面一行,录入更改提交说明
  3. 【按住】 Esc 键退出插入模式,并输入:wq 加回车自动保存

4.输入git push推送代码
git push

5.查看提交记录

从上图看到,虽然可以撤销提交内容,但是git提交历史无法清除。斩草需除根,所以需要下面的git reset 命令


2.『git reset』命令详解

① 作用

通过移动 HEAD 指针并可选地更改暂存区和工作目录的状态,用于撤销提交、取消暂存文件、修改提交内容等操作

大白话解释:通俗理解吃了毒药(git commit提交)后,你拥有一台时光机(git reset),可以穿越时空,回退到你吃下毒药之前,可以销毁一切历史痕迹。

② 语法

撤销最新提交,并保留修改

git reset --soft HEAD~1

撤销最新提交,并将暂存区的文件取消暂存

git reset HEAD~1

撤销最新提交,并丢弃所有更改

git reset --hard HEAD~1

将 HEAD 指针移动到指定commit-hash,用来回溯历史提交

git reset --hard <commit-hash>
③ 实例

上面命令没看懂,别急,再来看看实操,一看就懂!

案例:撤销下图中历史提交记录

1. 查看commit 记录

git log 查看项目历史的 commit 记录,找到需要回退的指针,根据上图我们需要回退2个指针

2. 执行git reset
git reset HEAD~2

git reset HEAD~2,回退2个指针

3. 强制推送远程仓库

但是我们发现云端记录还在,是因为我们还没强制推送远程仓库,需要用我们本地将云端覆盖

git push --force

4. 查看历史记录

一切尘埃落定,终于完美解决了这场提交事故!

总结

本文通过git提交事故为切入点,核心介绍了git resetgit revert 两个常用命令。 git revert 用于撤销之前的提交,并创建新的提交来保持提交历史git reset 用于移动分支的指针,可以修改提交历史,但不会创建新的提交。希望这两个命令能在危急时刻帮到你,有用就点赞收藏喽。

🍯猜你喜欢

文章推荐

【规范】看看人家Git提交描述,那叫一个规矩

【工具】用nvm管理nodejs版本切换,真香!

【苹果】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本

【项目实战】SpringBoot+uniapp+uview2打造H5+小程序+APP入门学习的聊天小项目

【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序

【模块分层】还不会SpringBoot项目模块分层?来这手把手教你!


目录
相关文章
|
3月前
|
消息中间件 小程序 Java
【规范】看看人家Git提交描述,那叫一个规矩
本文通过IDEA中的Git描述规范插件【git commit message helper】,介绍了Git提交描述的规范流程,强调了团队开发中统一标准的重要性,并通过实例展示了规范的提交记录如何提高代码管理和维护效率。最后,文章提供了几个实用的Git提交描述案例,帮助读者更好地理解和应用这些规范。
59 0
【规范】看看人家Git提交描述,那叫一个规矩
|
开发工具 git
git里commit的时候-m描述写错了,怎么修改描述
git里commit的时候-m描述写错了,怎么修改描述
1498 0
git里commit的时候-m描述写错了,怎么修改描述
|
3月前
|
存储 开发工具 git
|
11天前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
31 1
[Git]入门及其常用命令
|
3月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
66 0
|
1月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
104 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
15天前
|
开发工具 git 开发者
|
15天前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
37 0
|
2月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
2月前
|
机器学习/深度学习 Shell 开发工具
Python使用管道执行git命令报错|4-7
Python使用管道执行git命令报错|4-7