今天学习了git回退的两个命令,现在总结一下:

1.git reset

如果想回退错误的提交C和D,只要把指针移到B上

git reset --hard a0fvf8

而这时候,远程仓库的指针还在D上,如果直接用 git push 将无法推到远程仓库,所以只能用 git push -f 强制推到远程仓库,

这样会有弊端,当你发现C和D不是错误的或者有用的话,将无法找回,因为已经指针远程仓库的指针已经在B上了。

这时候 git revert 就有作用了

2.git revert

git revert的作用通过反做创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本,而不是目标版本。

单个回退,先revert C,在revert D

git revert 5lk4er
git revert 76sdeb

批量回退

git revert OLDER_COMMIT^..NEWER_COMMIT

这样,错误的C和D依然保留,以后可以找得回,最后直接 git push 直接推到远程仓库。

在举个例子:

错误的B在A和C中间,这时的操作是

先revert B,git revert a0fvf8

在revert C, git revert 76sdeb

再使用 cherry-pick 命令将 C 提交重新再生成一个新的提交 C'',这样就实现了将 B提交回退的需求。

3.区别:

通过以上对比可以发现,git reset 与 git revert 最大的差别就在于,git reset 会失去后面的提交,而 git revert 是通过反做的方式重新创建一个新的提交,而保留原有的提交。

Git回退---reset和revert的更多相关文章

  1. git中reset与revert的使用

    http://alpha-blog.wanglianghome.org/2010/07/30/git-partial-rollback/ reset(版本撤回) 格式 git reset [-q] [ ...

  2. Git 中的回退操作:reset 和 revert

    Git 中回退有 reset 和 revert,这两个的区别就是是否保留更改记录 假设当前的提交情况是:A <- B <- C <- D <- HEAD,如下图: 当前是 D, ...

  3. Git恢复之前版本的两种方法reset、revert

    实战 回退 1.删除之前的提交 git reset --hard id 推送到远程 git push -f [git log中确实删除了,但是拿到可以恢复] 2.不删除之前的提交 git revert ...

  4. [git]撤销的相关命令:reset、revert、checkout

    基本概念 工作区 暂存区 本地版本仓库 远程版本仓库 如果不清晰上面的四个概念,请查看廖老师的git教程 这里我多说几句:最开始我使用git的时候,我并不明白我为什么写完代码要用git的一些列指令把我 ...

  5. Git reset head revert 回滚

    Overview 涉及Git一些日常操作 :) 基础知识 <Pro Git>至少了解branch,commit的概念,及基本的原理 Git常用魔法 存档:master代码回滚方法 我是QA ...

  6. 如何使用git回退部分修改(转)

    如何使用git回退部分修改(转)     很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导 ...

  7. git的reset的理解

    git的reset的理解 1.在理解reset命令之前,先对git中涉及到的与该reset命令相关概念进行说明和解释HEAD这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交Indexind ...

  8. git回滚命令reset、revert的区别

    ##使用git,总有一天会遇到下面的问题: (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚. 所 ...

  9. Git恢复之前版本的两种方法reset、revert(图文详解)

    一.问题描述在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset).反做(reve ...

随机推荐

  1. 有关HTML版本

    先说说HTML的简史:从HTML1.0~2.0(1989~1991)>HTML3(1995)>HTML4(1998)>HTML4.01(1999)>XHTML1.0(2001) ...

  2. Spark学习之Spark调优与调试(7)

    Spark学习之Spark调优与调试(7) 1. 对Spark进行调优与调试通常需要修改Spark应用运行时配置的选项. 当创建一个SparkContext时就会创建一个SparkConf实例. 2. ...

  3. php学习知识点

    1.PHP 代码被包含在特殊的起始符和结束符中 <? ?> 2.php的用途 服务端脚本 命令行脚本. 编写桌面应用程序.3.输出语句.文本 echo printf4.$_SERVER 是 ...

  4. MVC中使用MVCPager简单分页

    一.建立数据库以及建立MVC项目 自己随便建立一个数据库,并且添加数据.我建立的数据库如下. 二.建立LINQ to SQL映射. 然后一步步点确定 三.编写代码 在Controllers中建立控制器 ...

  5. 查看MySQL默认字符集

    MySQL默认字符集相信大家都有所了解,下面就为您介绍一下查看MySQL默认字符集的命令,希望对您学习MySQL默认字符集能有些帮助. MySQL的字符集支持(Character Set Suppor ...

  6. numpy add

    在numpy中,'+' 和add 是一样的 np.add(x1, x2) x1+x2 有种特殊情况需要注意,x1和x2的shape不一样的加法: 两个shape不一样的array相加后会变成一个com ...

  7. freenas 系统可能存在的bug

    1.portal 中ip端口显示有问题. 2.创建extend/target映射之后重启iscsi服务有的时候不能启动. 3.后台/usr /etc 重启系统会自动还原.

  8. A、B、C、D四个字母,能组成多少个互不相同且无重复三位组合

    package 第五天的作业;/* * A.B.C.D四个字母,能组成多少个互不相同且无重复三位组合 */public class Demo14 { public static void main(S ...

  9. 德尔福 XE5 安卓调试

    https://stackoverflow.com/questions/2604727/how-can-i-connect-to-android-with-adb-over-tcp?page=2&am ...

  10. oracle调用存储过程和函数返回结果集

    在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得 ...