git reset --hard <commit>:
1.替换引用的指向.引用指向新的提交ID;
2.替换暂存区.替换后,暂存区的内容和引用指向的文件夹树一致;
3.替换工作区.替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的文件夹树内容同样.

git reset --soft <commit>:
1.替换引用的指向.引用指向新的提交ID.
即仅仅更改引用的指向,不该编暂存区和工作区.

git reset --mixed <commit>或git reset <commit>:
1.替换引用的指向.引用指向新的提交ID;
2.替换暂存区.替换后,暂存区的内容和引用指向的文件夹树一致;
即更改引用的指向及重置暂存区,可是工作区不变.

实例:
git reset
仅用HEAD指向的文件夹树重置暂存区,工作区不受影响,相当于将之前用git add命令更新到暂存区的内容撤出暂存区.引用也未改变,由于引用重置到HEAD相当于没有重置.

git reset HEAD
同上

git reset -- filename
仅将文件filename的修改撤出暂存区,暂存区中其它文件不该变.相当于git add filename的反向操作.

git reset HEAD filename
同上

git reset --soft  HEAD^
工作区和暂存区不改变,可是引用向前回退一次.当对最新提交的提交说明或提交不惬意更改时,撤销最新的提交一遍又一次提交.

git reset HEAD^
工作区不变,可是暂存区会回退到上一次提交之前,引用也会回退一次.

git reset --mixed HEAD^
同上

git reset --hard HEAD^
彻底撤销近期的提交.引用回退到前一次,并且工作区和暂存区都会回退到上一次提交的状态.自上一次以来的提交所有丢失.

--------------------------------------------------------------------------------------------------------------------------------------


git  checkout 
git checkout <commit> [--] <paths>
1.<commit>是可选项,假设省略则相当于从暂存区进行检出.和reset命令大不同样:重置的默认值是HEAD,而检出的默认值是暂存区.
2.因此重置一般用于重置暂存区(除非使用--hard,否则不重置工作区),而检出命令主要是覆盖工作区(假设<commit>不省略,也会替换暂存区中对应的文件).
3.该命令不会改变HEAD的头指针,主要用于指定版本号文件覆盖工作区中相应的文件.假设省略<commit>,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中的相应文件.

git checkout <branch>
1.会改变HEAD头指针.之所以后面的參数写作<branch>,是由于仅仅有HEAD切换到一个分支才干够对提交进行跟踪,否则仍然会进入"分离头指针"的状态.在"分离头指针"的状态下的提交并不能被引用关联到,从而可能丢失.所以该命令主要作用是切换分支.
2.假设省略<branch>则相当于对工作区进行状态检查.

实例:
git checkout branch
检出branch分支,更新HEAD以指向branch分支,以及用branch指向的树更新暂存区和工作区.

git checkout
汇总显示工作区,暂存区与HEAD的差异

git checkout HEAD
同上

git checkout -- filename
用暂存区中的filename文件来覆盖工作区中的filename文件.相当于取消自上次运行git add filename以来(假设运行过)的本地改动

git checkout branch -- filename
维持HEAD的指向不变.用branch所指向的提交中的filename替换暂存区和工作区中对应的文件.会将暂存区和工作区中的filename直接覆盖

git checkout -- .或者git checkout .
会取消本地全部改动,相当于用暂存区的全部文件直接覆盖本地文件.

git reset and git checkout的更多相关文章

  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 reset与git revert比較

    git reset git reset的作用是还原Index的状态或改动本地分支HEAD的位置. 这个命令适合用于从某个提交点又一次开新的分支.比方,假设某个提交之后的代码我们都不要了,就能够在本地r ...

  8. git revert .vs. git reset .vs. git rebase

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

  9. git reset和git revert

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

随机推荐

  1. poj 2996 Help Me with the Game(模拟)

    题目:http://poj.org/problem?id=2996 题意:给出 棋盘 情况 输出 白棋 和 黑棋在 棋盘上的 白棋为大写字母 黑棋为小写字母 棋盘 左下点为原点(1,a) 输出 是 按 ...

  2. openSession()和getCureentSession()的区别

    openSession():永远是打开一个新的session getCureentSession():如果当前环境有session,则取得原来已经存在的session,如果没有,则创建一个新的sess ...

  3. 在ASP.NET中各种跳转控制

    在ASP.NET中各种跳转控制 分类: 我的资料2012-03-16 15:01 76人阅读 评论(0) 收藏 举报 asp.netjavascripturlmenu Respose.Write(&q ...

  4. ArcGIS.Server.9.3和ArcGIS API for JavaScript地图实现Toorbar功能(四)

    转自:http://www.cnblogs.com/hll2008/archive/2008/11/22/1338630.html 目的:1.ArcGIS API for JavaScript实现To ...

  5. 《深入Java虚拟机学习笔记》- 第18章 finally子句

    本章主要介绍字节码实现的finally子句.包括相关指令以及这些指令的使用方式.此外,本章还介绍了Java源代码中finally子句所展示的一些令人惊讶的特性,并从字节码角度对这些特征进行了解释. 1 ...

  6. 算法 后减前最大值,zt

    一个人知道未来n天的每天股票的价格,请你给出一个算法,使得这个人从哪天买入,哪天卖出能获得最大的收益. 问题实际上就是求一个数组后面元素减前面元素的最大值 #include <stdio.h&g ...

  7. 在windows10+word2010中完美使用北大方正word公式输入法总结

    如果在安装输入法时遇到了无法安装的情况,请首先百度下VC运行库安装下(32位64位都安就是),然后安装北大方正word公式输入法,此时不会再提示无法安装,接着(关键)在word应用程序图标右键-> ...

  8. PPTP VPN不能打开百度

    问题: 在阿里云上设置PPTP VPN,电脑能正常连接,能打开京东 淘宝 QQ等没有问题,但是不能打开百度  糯米等网站.开始怀疑是代理设置问题,后面确认未设置独立规则. 1.从应用层看排除特殊规则设 ...

  9. FL2440移植Linux2.6.33.7内核

    kernel version:2.6.33.7 /linux-2.6.33.7 OS:CentOS 6.4 cross-compilation chain:arm-linux-4.3.2 /usr/l ...

  10. #ifdef _cplusplus (转)

    原文不可考,转载链接:http://blog.csdn.net/owldestiny/article/details/5772916 有发现原文的请告知,我会及时更新. 时常在cpp的代码之中看到这样 ...