IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    git reset与git checkout

    rock发表于 2015-04-20 11:11:59
    love 0
    本节内容来自(git 权威指南)

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

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

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

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

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

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


    git checkout 有以下三种常见用法:
    用法一:git checkout [-q] [] [--] ....
    用法二: git checkout []
    用法三: git checkout [-m] [ [-b | --orphan] [] ]

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

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

    git reset与git checkout - rock - 牧笔临风


沪ICP备19023445号-2号
友情链接