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}

浙公网安备 33010602011771号