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

牧笔临风

己有能,勿自私!

 
 
 

日志

 
 
 
 

git reset与git checkout  

2015-04-20 11:11:58|  分类: git |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本节内容来自(git 权威指南)

git checkout与git reset同样都有让文件恢复到某一状态的功能,都是具有危险的命令,但是会有一些区别。下面对比说一下。

git reset有两种用法:
用法一: git reset [-q] [<commit>] [--] <paths>....
用法二: git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]

其中<commit>为可选项可以为引用也可以是类似于02b26a4的提交ID,省略相当于使用了HEAD的指向作为提交ID
第一种用法在命令中包含了路径<paths>,可以避免路径和引用(或者提交ID)同名而发生冲突,可以在<paths>前用两个连续的短线做为分隔。这种用法不会重置引用,更不会改变工作区而是用指定提交状态(<commit>)下的文件(<paths>)替换掉暂存区的文件。

第二种用法会重置引用。先看下图:
git reset与git checkout - rock - 牧笔临风

 命令格式: git rest [--soft | --mixed | --hard ] <commit>
使用参数参数 --hard会执行上图中的全部动作1,2和3.
1. 替换引用的指向。引用指向新的提交ID
2. 替换暂存区。替换后,暂存区的内容和引用指向的目录树一致
3. 替换工作区。替换后,工作区的内容变得和暂存区一致,也和HEAD把指向的目录树内容相同

使用--soft 会执行上图中的动作1,只更改了引用的指向,不改变暂存区和工作区
使用--mixed 或不使用参数,会执行上图中的动作1和2,即更改引用的指向和重置暂存区,但是不改变工作区。


git checkout 有以下三种常见用法:
用法一:git checkout [-q] [<commit>] [--] <paths>....
用法二: git checkout [<branch>]
用法三: git checkout [-m] [ [-b | --orphan] <new_branch> [<start_point>] ]

第一种与第二种用法的区别在于,第一种用法在命令中包含路径<paths>为了避免路径和引用(或提交ID)同名而发生冲突。
可以在<paths>前用两个连续的短线做为分隔。
第一种用法中<commit>省略相当于从暂存区(index)中检出。
与reset对比: reset默认值是HEAD,checkout默认值是暂存区(index)

第三种用法主要是创建和银的到新的分支,新的分支从<start_point>指定的提交开始创建。
checkout与版本库的关系:

git reset与git checkout - rock - 牧笔临风
 
  评论这张
 
阅读(190)| 评论(1)
推荐 转载

历史上的今天

评论

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

页脚

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