目录
前言
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 存在两种情况
-
常规撤销
-
合并撤销
常规撤销
这种就是上面使用的命令,也是常见的。
合并撤销
如上面的例子中,从 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
参考文章
-
《》
-
《》
-
《》
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 <a href="https://cn.gravatar.com/">Gravatar</a>。