git revert简单记录

Git  2024年8月9日 pm3:15发布2个月前更新 91es.com站长
176 1 0

前言

git revert是撤销中间某次commit。今天就简单记录部分常用的,方便自己查阅。

正文

git revert 格式:

$ git revert -h
usage: git revert [<options>] <commit-ish>...
  or: git revert <subcommand>

  --quit               end revert or cherry-pick sequence
  --continue           resume revert or cherry-pick sequence
  --abort               cancel revert or cherry-pick sequence
  -n, --no-commit       don't automatically commit
  -e, --edit           edit the commit message
  -s, --signoff         add Signed-off-by:
  -m, --mainline <n>   parent number
  --rerere-autoupdate   update the index with reused conflict resolution if possible
  --strategy <strategy>
                        merge strategy
  -X, --strategy-option <option>
                        option for merge strategy
  -S, --gpg-sign[=<key-id>]
                        GPG sign commit

git revert 命令不会删除已经提交的更改,而是用于撤销这些更改并将它们保存在仓库中。

参数命令介绍

git revert --edit

需要编辑撤退记录信息

-e, --edit            edit the commit message

--edit或-e是默认,可以省略。

git revert --edit 9cd9045

git revert 9cd9045

上面两个效果一样。

git revert --no-edit

--no-edit就是撤退使用默认撤退记录即可,不需要重新编辑。

git revert --no-edit 9cd9045
git revert -n
-n, --no-commit       don't automatically commit

-n 和 --no-commit是一样的,撤退至暂停暂存区,不主动提交撤退记录。

git revert -n 8633135
$ git status .
On branch bq_car_emc
Your branch is up-to-date with 'origin/bq_car_emc'.
You are currently reverting commit 8633135.
(all conflicts fixed: run "git revert --continue")
(use "git revert --abort" to cancel the revert operation)

Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

      modified:   BiuMusic/src/main/java/com/biu/music/mediaservice/MusicPlayerService.java

如果要撤退或继续上面都有提示

//继续撤回提交
git revert --continue
//放弃撤回
git revert --abort
git revert -m
 -m, --mainline <n>    parent number

这部分内容看参考文三,我这里主要摘抄

git revert 时,需要分两种情况:一种是常规的commit,也就是使用git commit提交的commit;另一种是merge commit,在使用 git merge合并两个分支之后,你将会得到一个新的 merge commit。

merge commit 和普通 commit 的不同之处在于 merge commit 包含两个 parent commit,代表该 merge commit 是从哪两个 commit 合并过来的。

显示使用git log --graph --oneline展示提交记录。

 

有分支就表示是存在合并

$ git show bd86846
commit bd868465569400a6b9408050643e5949e8f2b8f5
Merge: ba25a9d 1c7036f

上面提示合并过bace436 1689a48

$ git show 39e50b3
commit 3e853bdcb2d8ce45be87d4f902c0ff6ad00f240a

也就是说revert 存在两种情况

  1. 常规撤销

  2. 合并撤销

常规撤销

这种就是上面使用的命令,也是常见的。

合并撤销

如上面的例子中,从 git show 命令的结果中可以看到,merge commit 的 parent 分别为 ba25a9d 和 1c7036f,其中 ba25a9d 代表 master 分支(从图中可以看出),1c7036f 代表 will-be-revert 分支。需要注意的是 -m 选项接收的参数是一个数字,数字取值为 1 和 2,也就是 Merge 行里面列出来的第一个还是第二个。

保留主分支,应该设置主分支为主线,操作如下:`

$ git revert -m 1 bd86846

简单测试

撤销单个提交

后面只跟commit-ish

git revert <commit-ish>

这里撤回 d26e8fecda82c4981024a00f1cd70236baa74c2d

git revert 9cd9045
撤销多个提交

撤销多个,可以制定范围。

多个的区间 (commit-ish1,commit-ish2],也就是开始commit-ish1是不撤回的,到后面的commit-ish2是要撤回的。

git revert <commit-ish1>..<commit-ish2>

git revert <commit-ish1>..

这里展示撤回指定区间

//66bbe53在9cd9045之前提交的
//(66bbe53,9cd9045]
git revert 66bbe53..9cd9045

使用多条撤回前

$ git log --oneline
9cd9045 water:屏蔽倒车
5f9244c water:屏蔽下线配置
66bbe53 water:屏蔽TA高亮
8633135 water: 新增音乐实时记忆

使用多条撤回后

$ git log --oneline
d60612d Revert "water:屏蔽下线配置"
f95bb21 Revert "water:屏蔽倒车"
9cd9045 water:屏蔽倒车
5f9244c water:屏蔽下线配置
66bbe53 water:屏蔽TA高亮
取消撤回操作
git revert --abort
继续撤回操作
git revert --continue 

参考文章

  1. git 官方文档

  2. git revert命令用法详解

  3. Git 之 revert

 

 历史上的今天

  1. 2023: JNI异常的使用(0条评论)
  2. 2022: 自定义SeekBar样式(0条评论)
  3. 2019: 沈从文 : 独处(0条评论)
  4. 2018: Settings源码分析之蓝牙(1)(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

1 条评论

  • 一位 WordPress 评论者

    您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 <a href="https://cn.gravatar.com/">Gravatar</a>。

    无记录
    回复

随机推荐

OkHttp简单介绍之一

前言okhttp很常用的一个网络请求框架,因此记录一下如何使用,然后走一下源码流程。这篇只是简单记录一下okhttp的同步和异步请求。好记性不让烂笔头正文同步和异步初始化都一样,只是最后调佣的方法不一样。这里只是简单记录,因此直接上代码。在Module的build.gradle中引入...

[摘]ARM与X86 CPU架构简介

什么是CPU中央处理单元(CPU)主要由运算器、控制器、寄存器三部分组成,从字面意思看运算器就是起着运算的作用,控制器就是负责发出CPU每条指令所需要的信息,寄存器就是保存运算或者指令的一些临时文件,这样可以保证更高的速度。 CPU有着处理指令、执行操作、控制时间、处理数据四大作用,打个比喻来说,...

[摘]PCM文件转WAV文件

一、WAV和PCM的区别和联系在Android平台上要进行音频编辑操作(比如裁剪,插入,合成等),通常都是需要将音频文件解码为WAV格式的音频文件或者PCM文件。那么WAV和PCM之间有什么关系,这里有必要了解一下。PCM(Pulse Code Modulation—-脉码调制录音)。所谓PC...

Dialog的简单使用

前言之前有写,好像也写过笔记,但不知放哪了。PS: 这里只是简单记录,谢谢好记性不如烂笔头正文直接上之前我写的代码(哈哈哈,将就一下吧),理论咱们不讲,自个百度。dialog_theme <!-- dalog style --> <style name...

Android 13之MediaProvider的优化

前言记录一下Android 13的MediaProvider的优化。随着Android发展,Android10 扫描器的的主要功能就放MediaProvider中了,MediaScannner类的作用就淡化了。记录一下,对MediaProvider的优化,方便自己查阅。正文这里只是简单记...

常用Linux命令摘抄之一

推荐使用 读书导航 极客导航 :125啦极客导航(http://www.91es.com/jike.html)1、man man的含义是manual,即手册。当我们不清楚Linux命令作用和用法时, 可以使用man command进行查询,command为具体的命令名称。 ...