一、使用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. 如何配置php.ini才能让PHP性能最大优化

    用于生产环境中的PHP需要对其进行优化,可以让PHP自身发挥更好的性能,除了写好PHP代码,还要配置好php.ini.本文从内存.文件上传.会话缓冲输出.真实路径缓存这几个方面讲解php.ini的配置 ...

  2. KMP算法学习记录

    Foreword: 初学KMP匹配算法,不得其门,总感觉自己想,想不出来,看书上文字解释晦涩难懂.不能准确的捕捉算法设计时候的灵光和思路 .于是自己试着完成了一遍,现将过程记录下来,以供复习. Con ...

  3. Redis5.0.4-集群(单机版)搭建

    最近尝试搭建了一下redis集群,这里记录一下,最后附上的是参考的博客地址. 安装C语言编译环境GCC yum install -y gcc-c++ 下载redis并编译安装 下载: wget htt ...

  4. 第一天1h

    //摄氏度和华氏度之间的换算//20211120//ZhangWenjing#include<stdio.h>int main(void){ int f = 0; int c = 0; s ...

  5. Web服务器2

    Web服务器2 基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用Linux Socket实现: Web服务器的客户端服务器,提交程序运行截图 实现GET即可,请求,响应要符合HTTP协议规范 ...

  6. postgres 表字段修改

    更换字段名 alter table 表名 rename column 字段名 to 新字段名; 更换表名 alter table 表名 rename to 新表名; 更改字段长度 alter tabl ...

  7. Vue的官方脚手架 Vue-cli 安装使用解析

    ------------恢复内容开始------------ 1.首先什么是vue-cli 可以知道Vue-cli是一个官方提供的脚手架,主要作用是用来快速搭建Vue的项目模板,可以预先定义好项目的结 ...

  8. SQL 抽象语法树及改写场景应用

    SQL 抽象语法树及改写场景应用 1 背景 我们平时会写各种各样或简单或复杂的 sql 语句,提交后就会得到我们想要的结果集.比如 sql 语句,"select * from t_user ...

  9. 行转列 && 字段拆分

    explode称之为Hive爆炸函数,意思就是将一行数据炸开.Usage:explode(array/map) explode函数传递的参数必须是一个array或者是map hivescala> ...

  10. struts 1.x框架记录

    strus-config.xml 项目目录最顶层建立配置文件strus-config.xml action 通过type绑定java类,可通过attribute被引用 MyLoginForm.java ...