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. Chrome浏览器导出pdf时,隐藏链接HREF

    在使用chrome打印pdf是,会出现链接的HREF也同时打印的情况,只要加一句CSS即可 @media print {   a[href]:after {     content: none !im ...

  2. LeetCode题解:Rotate List

    Rotate List Given a list, rotate the list to the right by k places, where k is non-negative. For exa ...

  3. 如何大幅优化solr的查询性能(转)

    提升软件性能,通常喜欢去调整各种启动参数,这没有多大意义,小伎俩. 性能优化要从架构和策略入手,才有可能得到较大的收益 Solr的查询是基于Field的,以Field为基本单元,例如一个文章站要索引 ...

  4. WebView&HTML5-----使用WebView播放HTML5视频文件

    一.问题描述 HTML5提供了很多新的特性比如,视频播放.web本地存储.地理定位.应用缓存.Canvas等,但这些特性需要浏览器的支持,在Android应用中我们可以使用WebView构建Web应用 ...

  5. Shark简介、部署及编译小结

    http://blog.csdn.net/pelick/article/details/11964291 Shark简介 Shark即Hive on Spark,本质上是通过Hive的HQL解析,把H ...

  6. 向windows添加环境变量

    以NASM为例,软件安装完毕后,启动Windows操作系统的命令窗口,在安装目录(比如C:\Program Files\NASM)下运行nasm是ok的,但是在其他任意目录下运行nasm就会报错. 这 ...

  7. JAVA对图片的任意角度旋转,以及镜像操作

    package relevantTest;/* * 该代码实现了对图像的水平镜像变换,垂直镜像变换,任意角度旋转,jtf的实时监控,以及对图像的缩放变换,以及按钮的若隐若现效果. * 在对图像进行任意 ...

  8. it 建设工具一览

    一 基础建设清单 =============================================== 1 jira, 2 maven,nexus   http://blog.csdn.ne ...

  9. 《python源代码剖析》笔记 python中的List对象

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.PyListObject对象 --> 变长可变对象,可看作vector<Py ...

  10. 关于for in和for循环的遍历

    今日看W3C的javascript教程,发现了这样的有趣的遍历方法. 第一是for in for (x in myArray) { document.write(myArray[x] + " ...