git学习笔记(五)--git的重置

主要讨论git的两个问题:

1.git的重置问题,就是恢复之前的版本,而抛弃当前的版本;

2.如果git重置的不理想,如何再回到之前的版本中去。


 

 

1. git的重置命令


 

git的重置命令有两种用法,主要使用第二种用法的格式:

  git reset  [--soft | --mixed | --hard]  [-q]  [<commit>]

说明:

(1)这里的commit可以使用引用或者提交ID,如果省略commit,则默认使用HEAD指向的最近一次提交作为提交ID

(2)--hard选项,会进行三个步骤:

    1)替换refs/heads/master的引用,指向引用的ID

    2)暂存区的内容替换成引用指向的ID的内容

    3)工作区的内容页替换,内容和暂存区一样

  一句话,就是全部重置

(3)--soft选项,进行--hard中的一个步骤:就是上述的1),只改变引用指向,不改变工作区和暂存区的内容

(4)--mixed选项,默认选项,进行--hard中的前两个步骤

(5)常用命令:

    git reset       //仅用HEAD指向的目录树重置暂存区,相当于把之前git add到暂存区的内容撤出

    git reset -- filename   //将文件filename的改动撤出暂存区,git add filename的反操作

    git reset --soft HEAD^  //撤销上一次提交,以便最新提交,注意是soft所以工作区和暂存区不变

    git reset --hard HEAD^  //上一次提交的所有修改全部放弃,恢复上上一次的全部内容

(6)注意:HEAD是一个引用,表示最近一次的提交ID,而HEAD^表示的是最近一次提交的上一次提交 

 

 

2.git的恢复命令 


 

在.git/logs/refs/heads/master下保存有master分支的指向变迁,最新的修改添加在记录的末尾

1. 查看最近的变迁过程

  git reflog show master

2. 恢复到某个过去版本中(修改HEAD)

  git reset --hard  master@{2}

 

 

 

 

 

 

posted on 2012-07-22 16:39  melburg  阅读(428)  评论(0)    收藏  举报