分支游标master

1. git reset --hard HEAD^

    HEAD^当前版本的父版本(代表了HEAD的父提交),引用refs/heads/master 就好像一个游标,在有新的提交发生的时候指向了新的提交。

    Git中提供的git reset 命令将“游标” 指向了任意一个存在的提交ID.

2. git reset --hard commitID

    重置命令不仅可以重置到前一次提交,而且还可以直接使用提交ID重置到任何一次提交。

 

重置命令(git reset)是Git最常用的命令之一,也是最危险最容易误用的命令。git reset 命令的用法:

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

用法二:git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>] 

上面列出了两种用法,其中<commit> 都是可选项,可以使用引用或提交ID,如果省略<commit> 则相当于使用了HEAD

的指向作为提交ID.

1. 第一种方法:在命令中包含路径<paths>。不会重置引用,更不会改变工作区,而是用指定提交状态(<commit>)下的

    文件替换暂存区中的文件。git reset HEAD <paths> 相当于取消之前执行的git add <paths> 命令时改变的暂存区。

2. 第二种方法:会重置引用。根据不同的选项,可以对暂存区或工作区进行重置。

    命令格式:git reset [--soft | --mixed | --hard] [<commit>]

    1)参数 --hard:

        a.替换引用的指向。引用指向新的提交ID

        b. 替换暂存区。替换后,暂存区的内容和引用指向的目录树一致。

        c. 替换工作区。替换后,工作区的内容变的和暂存区一致,也和HEAD所指向的目录树内容相同。

   2)参数:--soft:

        只更改引用的指向,不改变暂存区和工作区。

   3)参数:--mixed(默认参数),如git reset <commit>

        更改引用的指向及重置暂存区,但是不改变工作区。

   4) git reset 

         仅用HEAD指向的目录树重置暂存区,工作区不会受到影响,相当于将之前用git add 命令更新到暂存区的内容

         撤出暂存区。引用页未改变,因为引用重置到HEAD相当于没有重置。

   5) git reset HEAD

         同上

   6) git reset -- filename

         仅将文件filename的改动撤出暂存区,暂存区中其他文件不改变。相当于对命令 git add filename的反向操作。

   7) git reset HEAD filename

        同上

   8)git reset --soft HEAD^

        工作区和暂存区不改变,但是引用向前回退一次。当对最新提交的提交说明或提交的更改不满意时,撤销最新的提交以便

        重新提交。

   9)git reset HEAD^

        工作区不改变,但是暂存区会回退到上一次提交之前,引用也会回退一次。

  10) git reset --mixed HEAD^

          同上

  11)git reset --hard HEAD^

         彻底撤销最近的提交。引用回退到前一次,而且工作区和暂存区都会回退到上一次提交的状态。

 

posted @ 2014-01-16 15:29  sunshine_girl  阅读(140)  评论(0)    收藏  举报