注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

Git使用之六——从本地检出checkout  

2013-12-30 10:33:17|  分类: 环境安装使用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Git使用之六——从本地检出

摘自《Git权威指南》

周五做了一个很狠的动作,把本地所有的文件都给清空了,结果怎么也更新不下来了,直接GIT PULL报已经是最新版本。后来想起来这种情况可以直接从本地库CHECKOUT出来。可是用了几种方法都没有成功。

 git checkout HEAD^

结果发现恢复到了,最早的那个版本。后来又查了下用:

git checkout -- .

成功恢复了。

把找到资料复制一下:http://www.cnblogs.com/craftor/archive/2012/11/04/2754147.html

检出命令git checkoutgit最常用的命令之一,同时也是一个很危险的命令,因为这条命令会重写工作区。检出命令的用法如下:

 

用法一:git checkout [-q] [<commit>] [--] <paths>...

 

用法二:git checkout [<branch>]

 

用法三:git checkout [-m] [[-b]--orphan] <new_branch>] [<start_point>]

 

上面列出的第一种用法和第二种用法的区别在于,第一种用法在命令中包含路径<paths>。为了避免路径和引用(或者提交ID)同名而发生冲突,可以在<paths>前用两个连续的短线(短号)作为分隔。

 

第一种用法的<commit>是可选项,如果省略则相当于从暂存区(index)进行检出。这和上一章的重置命令大不相同:重置的默认值是HEAD,而检出的默认值是暂存区。因此重置一般用于重置暂存区(除非使用--hard参数,否则不会重置工作区),而检出命令主要是覆盖工作区(如果<commit>不省略,也会替换暂存区中相应的文件)。

 

第一种用法(包含了路径<paths>的用法)不会改变HEAD头指针,主要是用于指定版本的文件覆盖工作区中对应的文件。如果省略<commit>,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区中和工作区中对应的文件。

 

第二种用法(不使用路径<paths>的用法)则会改变HEAD头指针。之所以后面的参数会写作<branch>,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”的状态。在“分离头指针”状态下的提交不能被引用关联到,从而可能丢失。所以用法二最主要的作用就是切换到分支。如果省略<branch>则相当于对工作区进行状态检查。

 

第三种用法主要是创建和切换到新的分支(<new_branch>),新的分支从<start_point>指定的提交开始创建。新分支和我们熟悉的master分支没有什么实质的不同,都是在refs/heads命名空间下的引用。

 

下图所示的版本库模型图描述了git checkout实际完成的操作。

 

clip_image002

Git使用之六——从本地检出checkout - 还东国 - 还东国的博客

 

下面通过一些示例具体看一下检出命令的不同用法。

 

$ 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 checkout 命令后的参数为一个点(“.”)。这条命令最危险!会取消所有本地的  修改(相对于暂存区)。相当于用暂存区的所有文件直接覆盖本地文件,不给用户任何       确认的机会!

 

实践出真知,从实践中来,到实践中去。

  评论这张
 
阅读(1071)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017