git reset

git reset的作用是还原Index的状态或改动本地分支HEAD的位置。

这个命令适合用于从某个提交点又一次开新的分支。比方,假设某个提交之后的代码我们都不要了,就能够在本地reset至指定commit,然后开一个新的branch继续新的开发(原来分支在远程上没有发生不论什么变化的)。

使用git reset是不影响远程分支的。一切都在本地发生。假设回退须要非常快影响远程分支的,应该使用git revert。

git revert

假如某些旧提交我们不想要了,而又不愿通过自己改动代码又一次提交的方式来完毕,这个时候我们就能够把这项工作交给revert命令。

Git Revert原理:依据你要回退的提交所做的改动做相反的改动,然后又一次提交代码,使代码达到没有这些旧提交所能达到的状态。

假设对于git revert的回退策略还没理解,这样讲或许你就能理解了:回退旧的提交必定会导致当前最新代码发生变化,比方之前某个提交加了一行代码,那么回退就是在同样位置减一行代码。Git不会真的把旧提交抛弃,假设直接抛弃,历史记录就追踪不到了。因此。旧提交事实上是没动的,Git仅仅是依据旧提交反着做了一遍,这才导致最新的代码发生了改变。

仅仅有把revert命令回退导致的改动又一次提交,revert命令才算真的完毕并生效。否则效果仅仅相当于改动了工作树的文件而已。

注意:revert之后须要push到远程分支上其它用户才干看到回退发生的改动。

使用git revert会出现的问题

由于git revert是用新提交覆盖旧提交,因此,被覆盖的提交等于不会被採用了。

假设两个分支(假设是master和A分支)先合并再用revert回滚。之后又合并(A合并到master),就会发如今master分支上,A分支第一次合并之前的改动大部分不见了。

这是由于从时间的发生顺序来看,A分支第一次合并之前的改动发生在revert之前,revert发生在后,而 revert抛弃了A第一合并之前的改动,那么再合并Git就觉得你永远抛弃了A第一次之前的改动。

要解决问题,须要把revert产生的提交再revert一次。

git reset与git revert比較的更多相关文章

  1. 代码回滚:git reset、git checkout和git revert区别和联系

    git reset.git checkout和git revert是你的Git工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文件. 因为 ...

  2. git reset、git checkout和git revert的区别

    这三个git命令都是用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于commit层面,还可以作用于file层面Reset在commit层面,reset通过移除当前分支的一些节点来实现版本回滚; ...

  3. Git 相关问题分享,git reset与git revert的区别?

    1.如果我在git add 后想要撤销操作,该怎么做? 使用 git rm --cache [文件名/ *] 或者 git reset HEAD, 为什么这个命令也会有效果呢,实际上reset将 HE ...

  4. 关于git reset和git revert之前的区别

    很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导致maven项目格式不正确,这个时候,可以 ...

  5. git reset与git revert的区别

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

  6. git reset 和 git revert 使用区别

    git reset 用于回退代码,但是git pull后会和远程分支保持一致,所以无法修改远程代码 git revert可以撤销代码,撤销后直接git push ,可以修改远程分支的代码

  7. git revert .vs. git reset .vs. git rebase

    1. git rervert的工作方式是:将一个老的commit的改动完全找出来,并且在新的tip处运行反操作,最终清除老commit的改动: git revert的应用场景多在对public rep ...

  8. git reset和git revert

    1 git reset commit-id 直接回到某次提交,该次commit-id之后的提交都会被删除. --hard,将index和本地都恢复到指定的commit版本. 2 git revert ...

  9. git reset 与 git revert的区别?

    一,git reset的功能: 该命令修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本, 说明: 修改后,push到远程仓库时需要使用"git push -f"提 ...

随机推荐

  1. QT中使用MinGW 编译的protobuf库--包含库的生成和使用

    QT中使用MinGW 编译的protobuf库--包含库的生成和使用 0前言 1准备工作 2生成protobuf库文件 3在QT中测试protobuf的使用 4结语 0前言 最近要在QT中使用prot ...

  2. Asp.Net 控件 GridView

    这两天做的作业都得用到visual studio 越来越发现其功能真心强大 前几天Asp.Net做了个界面增删查改的作业(连接数据库),用到了个组件GridView,感觉很强大 在这里小结一下(这里主 ...

  3. 华清远见Linux设备驱动(每章小结)

    1.  linux设备驱动是以内核模块的方式而存在的,在具体的驱动开发中将驱动编译为模块具有很到的工程意义.因为如果将正在开发中的驱动编译如内核,而开发过程中会不断修改驱动代码,则需要不断的编译和重启 ...

  4. EF6源码学习-准备篇

    现在对于.net开发人员来说EF已经很流行了,虽然我在2010年的时候就用过EF,也看过几本书,但是还没有仔细研究EF的code, 曾经也尝试阅读EF5的源代码,后来由于时间关系也没有坚持住.现在计划 ...

  5. HttpWebRequest 对象池 HTTP协议 HttpWebRequest和 Socket的一点总结

    相信接触过网络开发的人对HTTP.HttpWebRequest.Socket这些东西都不陌生吧.它们之间的一些介绍和关系我这里都忽略了.开我们平时开发过程中也是很少有机会接触大什么大并发这个东东,一般 ...

  6. iOS开发-Instruments性能调优

    性能是苹果审核的一个很重要的部分,CPU,内存,图形绘制,存储空间和网络性能都是应用的重要的评估和组成部分.不管是作为个人应用开发者还是企业的开发人员,都需要遵循的一个原则是站在用户的角度去思考问题, ...

  7. Palindrome Number leetcode java

    题目: Determine whether an integer is a palindrome. Do this without extra space. click to show spoiler ...

  8. 微信小程序显示html格式内容(wxParse使用及循环解析数据渲染)

    小程序默认是不支持html格式的内容显示的,那我们需要显示html内容的时候,就可以通过wxParse来实现. 首先我们下载wxParse,github地址:https://github.com/ic ...

  9. Struts2环境搭建及实例解析

    与struts1框架的使用一样,struts2的环境搭建及使用同样分为以下几个步骤: 1.      引入jar包(这里以struts2.2.3为例),所需jar包有以下几个: a)        s ...

  10. vSCode打开文件老覆盖原窗口

    https://segmentfault.com/q/1010000006131199?_ea=1023522 设置中搜preview,改为false