error: could not revert d0c8e48... Revert "第5次提交 , revert 撤销第4次提交"
。revert commit
记录 。-n
参数作用:
git revert
命令移除某几次的提交的修改,但是不要使用还原的更改创建任何提交,还原只是修改工作树和索引 。简写-n
,全称--no-commit
。命令:
git revert -n <commit新>...<commit旧>
(2)
-m
参数作用:
git revert
移除merge(合并)的修改内容 。简写:
-m parent-number
, 全称:--mainline parent-number
。命令:
git revert [-m parent-number] <commit>
。说明:
如果我们需要还原的提交的是merge的操作 , 直接使用
git revert <commit>
的方式是不行的,会提示我们:error: commit ... is a merge but no -m option was given.fatal: revert failed
因为merge操作有两个分支 , 而revert不知道要还原哪个分支的提交,就没法进行还原\移除那些提交记录的修改的操作了 , 所以我们用-m 1
来告诉git revert
命令哪个是主线 , 哪个是非主线 。(选择主线就还原非主线,选择非主线就还原主线)另外,这个主线是1还是2是从哪里看出来的呢?
我们可以使用
git show
命令查看,如果是普通的commit提交,通常会显示这个commit的id、作者、日期、备注、更改文件内容等;如果是merge的记录,则会显示merge 的commit-id,备注、日期和merge的主线和合并过来的id 。例如:
commit 63374e93eebd2b86882e5a4bb75dcd9d0e334b15Merge: bc64f61 72032b7Author: unknown [test@163.com](mailto:test@163.com)Date: Sun Jul 19 11:34:21 2020 +0800??Merge branch ‘testcopy2’ into testcopy
如上第二行,Merge: bc64f61 72032b7
,bc64f61
就是主线的id,编号就是1;72032b7
就是非主线的id,编号就是2 。此时 , 我们要把合并过来的分支的修改给还原掉 , 那么就可以指定1为主线,还原掉2的提交了 。6、
git revert
和git reset
命令的区别git revert
命令是用一次新的commit来回滚之前的commit ,git reset
命令是直接回滚到指定的commit 。即:git reset
命令是把HEAD向历史版本移动,而git revert
命令是把HEAD继续指向新的commit 。- 在回滚这一操作上看,效果差不多 。但是在日后继续merge(合并)以前的老版本时有区别 。因为
git revert
命令是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch(分支)时,导致这部分改变不会再次出现 。但是git reset
命令是直接在某个分支上 , 回退到指定的commit , 后边的提交不会在版本库的历史中(只能使用reflog
查看) 。因而和老的branch再次merge时,这些被回滚的commit应该还会被引入 。
git reset
命令与 git revert
命令最大的差别就在于,git reset
命令会失去后面的提交 , 而 git revert
命令是通过反做的方式重新创建一个新的提交,而保留原有的提交 。在企业里,应尽量使用 git revert
命令,能不用 git reset
命令尽量不用 。参考:
- http://blog.itpub.net/31524109/viewspace-2653118/
- https://www.talktocomputer.site/blogs/83/
推荐阅读
- 怎么在淘宝投诉卖家(淘宝小二最怕投诉电话)
- 二 kafka详解--kafka为什么快
- 一 『现学现忘』Git后悔药 — 32、revert撤销
- 二 路径分析—PostgreSQL+GeoServer+Openlayers
- 电锯人第二集在哪可以看
- 二 SpringBoot - 核心配置文件
- .NET 采用 SkiaSharp 生成二维码和图形验证码及图片进行指定区域截取方法实现
- 【算法训练营day1】LeetCode704. 二分查找 LeetCode27. 移除元素
- AVX图像算法优化系列二: 使用AVX2指令集加速查表算法。
- 军棋的暗棋怎么玩要详细(二人军棋暗棋翻棋方法)