一、使用git rebase命令

如果您想彻底删除 Git 中的某次提交的内容,可以使用 git rebase 命令并将该提交删除。

以下是删除 Git 提交内容的步骤:

  1. 找到要删除的提交的哈希值。可以使用 git log 命令查看提交历史记录,然后找到要删除的提交的哈希值。

  2. 在终端中使用 git rebase -i 命令并指定要删除的提交的哈希值。例如,要删除哈希值为 abc123 的提交,您可以运行以下命令:

git rebase -i abc123~1
git rebase -i HEAD~1

  在这里,abc123~1 表示要删除的提交的前一个提交。

  1. 然后 Git 会打开一个交互式编辑器,并显示一个类似于下面的文本:
pick abc123 commit message
pick def456 another commit message
pick ghi789 yet another commit message
  1. 将要删除的提交所在的行的单词 pick 替换为单词 drop。例如,如果要删除 abc123,则应将第一行更改为:
drop abc123 commit message
  1. 保存更改并关闭编辑器。

  2. 然后 Git 会自动重播您的提交,并在重播时跳过要删除的提交。如果需要,您可能需要解决任何冲突,并提交最终更改。

注意,使用 git rebase 命令来删除提交可以永久删除提交并更改 Git 历史记录。如果您不确定如何使用 git rebase 命令,建议在使用前备份您的 Git 存储库。

二、使用git revert命令

使用 git revert 命令可以撤销指定提交的更改,并创建一个新的提交来保留已撤销的更改的历史记录。

以下是使用 git revert 撤销提交的步骤:

  1. 找到要撤销的提交的哈希值。可以使用 git log 命令查看提交历史记录,然后找到要撤销的提交的哈希值。

  2. 在终端中使用 git revert 命令并指定要撤销的提交的哈希值。例如,要撤销哈希值为 abc123 的提交,您可以运行以下命令:

git revert abc123
  1. 然后 Git 会打开一个编辑器,让您输入此次撤销提交的注释。如果您希望使用默认注释,请直接关闭编辑器。

  2. 最后,Git 将创建一个新的提交,用于撤销您要撤销的提交所做的更改。这个新的提交将保留已撤销的更改的历史记录。您可以使用 git log 命令检查您的提交历史记录以确认撤销操作已成功完成。

需要注意的是,使用 git revert 命令撤销提交会创建一个新的提交,这意味着您的 Git 历史记录将包含一个新的提交来保留已撤销的更改的历史记录。这与使用 git reset 命令删除提交不同,后者会直接删除提交及其历史记录。

三、使用git reset命令

使用 git reset 命令可以将当前分支的 HEAD 指针移到任意提交,从而使您能够删除 Git 存储库中的提交。

以下是使用 git reset 删除提交的步骤:

  1. 找到要删除的提交的哈希值。可以使用 git log 命令查看提交历史记录,然后找到要删除的提交的哈希值。

  2. 使用以下命令来删除该提交:

git reset --hard <commit-hash>

 

其中 <commit-hash> 是您要删除的提交的哈希值。

  1. 运行此命令后,Git 将删除所有在该提交之后进行的更改,并将您的当前分支 HEAD 指针移动到要删除的提交上。

需要注意的是,使用 git reset 命令删除提交会更改 Git 存储库的历史记录,这意味着您的提交历史记录将会被修改。因此,您应该谨慎使用此命令,并确保您已经了解了删除提交的后果。

另外,请注意,使用 git reset --hard 命令删除提交时,将会删除该提交及其之后的所有更改。如果您只想删除该提交本身而不影响其他更改,请使用 git reset --soft 命令。这将将 HEAD 指针移到要删除的提交上,但不会更改 Git 存储库中的文件或文件夹。这样,您就可以重新提交您想要保留的更改

  4.如果您已经将更改推送到 Git 存储库的远程分支,并且想要删除提交,可以使用 git push --force 命令将更改强制推送到远程分支。但是,请注意,强制推送会更改远程分支的历史记录,并且可能会影响其他人正在使用的分支。因此,在进行强制推送之前,应该确保其他人知道并同意这样做。

使用以下命令将更改强制推送到远程分支:

git push --force <remote-name> <branch-name>  

其中 <remote-name> 是远程仓库的名称,<branch-name> 是要推送更改的分支名称。此命令将强制将更改推送到远程分支,并覆盖远程分支的历史记录。如果其他人正在使用该分支,则可能需要通知他们进行相应的更改。

请注意,强制推送更改可能会对其他人造成影响,因此应该谨慎使用。如果您想要删除提交,但不想对其他人造成影响,则可以使用 git revert 命令来撤消该提交所做的更改,而不会修改 Git 存储库的历史记录。

 

 

git撤销某一次commit提交的更多相关文章

  1. Git: A分支上的commit提交到B分支上

    1. 执行git log -3 --graph A,查看A分支下的commit: 注:commit 后面的hash值代表某个commit,这里把”82f1fb7138c5860cc775b4b5ea7 ...

  2. git 删除、合并多次commit提交记录

    合并多次记录 1. git log找到要合并的记录的数量. 2. git rebase -i HEAD~5 将最上面一个的记录选为pack,下面记录都改为s. ================= 删除 ...

  3. git撤销中间的某次提交

    这几天在开发一个新功能,应为着急上线,所以就把代码提交上去了,当现在有时间又要再改改,又要把我那次提交全部删掉,想重新再写,但是代码已经合了,而且还有其他同事的代码,我的提交在中间的某个部分,所以我想 ...

  4. git 撤销上一次 commit

    1.本地 commit,没有推到远程仓库 可以 git reset --soft <commit_id>,commit_id 是要回退到的某一版本 然后再进行修改,再commit, 如果需 ...

  5. Git 撤销中间某次的提交记录

    今天遇到一个问题,一周前一位同事把非发布代码合并到发布分支上并已发布线上,在这个提交点后已经有了很多次的提交记录,所以不能直接回滚,使用到了gIt提供的revert.以此记录. git revert ...

  6. Git 撤销所有未提交(Commit)的内容

    撸了好多代码,但是突然设计改了(~~o(>_<)o ~~):或者引入个第三方库,后来又发现用不着,想删掉,但文件太多了(比如几百个):那,怎么办呢,都不想了...Git 比人聪明,所以能很 ...

  7. Git撤销对远程仓库的push&commit提交

    撤销push 1. 执行  git log查看日志,获取需要回退的版本号 2. 执行 git reset –soft <版本号> ,如 git reset -soft 4f5e9a90ed ...

  8. Git 实用操作:撤销 Commit 提交

    有的时候,改完代码提交 commit 后发现写得实在太烂了,连自己的都看不下去,与其修改它还不如丢弃重写.怎么操作呢? 使用 reset 撤销 如果是最近提交的 commit 要丢弃重写可以用 res ...

  9. git 撤销提交的文件

    一.问题 近期在使用git时遇到一个问题,就是在git上传文件时,将一个100兆的大文件添加到了git,并执行了push操作,这时在上传完毕后,会提示这个错误 Large files detected ...

  10. 痞子衡嵌入式:第一本Git命令教程(5)- 提交(commit/format-patch/am)

    今天是Git系列课程第五课,上一课我们做了Git本地提交前的准备工作,今天痞子衡要讲的是Git本地提交操作. 当我们在仓库工作区下完成了文件增删改操作之后,并且使用git add将文件改动记录在暂存区 ...

随机推荐

  1. Python笔记(5)——if 语句一:条件测试(Python编程:从入门到实践)

    每条if语句的核心都是一个值为True或False的表达式.Python根据条件测试的值为True还是False来决定是否执行if语句中的代码.如果条件测试的值为True,Python就执行紧跟在if ...

  2. NOIP2008普及组

    T2]排座椅 横行相同时列数+1,纵行相同时行数+1. 主要是用桶排序,因为范围太大了,用sort会超时 #include<iostream> #include<cstring> ...

  3. (6) JavaScript - Math对象与日期对象

    1 认识对象 概念:对象就是一种类型,一种引用类型,而对象则是引用类型的实例.在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,通常它也被称作类. 面向过程思想:只考虑过程 ...

  4. oneDNN

    目录 oneDNN卷积思路 debug捆绑套路 jit_avx2_convolution_fwd_t::execute_forward( 整个文件oneDNN/src/cpu/x64/jit_avx2 ...

  5. C++初识指针之一

    新手学习C/C++都跳不过去的地方,就是指针,用的话,确实好用,但是概念比较绕, 指针的通俗说法 1.简单的来说,就是说每一个变量,在电脑内都占一个地方,这个地方用一个16进掉的编号来进行标记,类似于 ...

  6. python实例1(石头 剪刀 布)

    #random   .randint       模块导入 import random #定义一个用户需要输入的数据内容入口 user = int(input("请输入(石头1,剪刀2,布3 ...

  7. 学习记录--C++组合+依赖+依赖倒置

    组合关系:表示类之间的关系是整体与部分的关系.即has a / contains a的关系 在面向对象程序设计中,将一个复杂对象分解为简单对象的组合. 在代码中,体现为将一个或多个类的对象作为另一个类 ...

  8. 局部异常因子(Local Outlier Factor, LOF)算法详解及实验

    局部异常因子(Local Outlier Factor, LOF)通过计算样本点的局部相对密度来衡量这个样本点的异常情况,可以算是一类无监督学习算法.下面首先对算法的进行介绍,然后进行实验. LOF算 ...

  9. 自己动手从零写桌面操作系统GrapeOS系列教程——15.用汇编向屏幕输出字符

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 在上一讲中我们介绍了屏幕显示的原理,本讲我们来实战一下. 一.向屏幕输出一个字符mbr4.asm mbr4.asm中的代码如下: ;将屏幕第一行 ...

  10. Double-Checked Locking 双重检查锁问题

    Code Correctness: Double-Checked Locking Abstract Double-checked locking 是一种不正确的用法,并不能达到预期目标. Explan ...