Git reset中关于soft、mixed、hard参数的使用
使用git时,有时会遇到回退版本的问题,此时,reset命令就能派上用场。reset有3中模式,soft、mixed、hard,充分理解它们的不同,可以更好的使用它们。在充分使用前,需要先理解git的本地组成部分git的本地组成git的本地组成有3部分,分别是工作区、暂存区、本地仓库另外,还需要理解HEAD头指针1、工作区通俗的讲,就是电脑中的目录,就像下面图片中表示的一样2、暂存区使用git a
使用git时,有时会遇到回退版本的问题,此时,reset命令就能派上用场。reset有3中模式,soft、mixed、hard,充分理解它们的不同,可以更好的使用它们。
在充分使用前,需要先理解git的本地组成部分
git的本地组成
git的本地组成有3部分,分别是工作区、暂存区、本地仓库
另外,还需要理解HEAD头指针
1、工作区
通俗的讲,就是电脑中的目录,就像下面图片中表示的一样
2、暂存区
使用git add后,文件便会计入到暂存区
在这里,创建了一个test文件并添加到了暂存区
3、本地仓库
进行commit操作后,暂存区中的文件会添加到本地仓库
此时将test文件加入了本地仓库,之后就可以使用push推送到远程分支上了
4、HEAD指针
HEAD指针指的是当前仓库所在的版本,每次提交,都会生成一个提交记录,HEAD指针就会指向最新的提交记录
soft、mixed、hard使用
完整命令: git reset --hard(mixed/soft) [commit id]
,其中commit id可以从git log --oneline
命令中找到要回滚的id
首先,对test文件进行修改,并提交到本地仓库
将test中的文件hello git
修改成了hello git!!!
,并提交到了本地仓库,并且现在有2条提交记录
接下来,如果想要撤销此次commit,就可以使用reset命令
soft
soft参数会将HEAD指针指向要回滚的提交id,同时保留工作区和暂存区的代码,清除本地仓库中的代码
从上面图片中得知,要回滚的commit id是f7eae70
从git status
命令中可以看出,changes to be committed
,有需要重新提交的文件,打开test文件,依旧是hello git!!!
,文件并没有修改
此时的git log --oneline
为
之前的提交记录已经没有了
mixed
mixed参数也会是HEAD指针回滚到指定的提交id,同时只会保留工作区的代码
从git staus
命令中可以看出,显示的changes not staged for commit
,暂存区已经没有了文件,而工作区的代码依旧是hello git!!!
,HEAD指针也回滚到了指定的提交id
hard
hard参数也会是HEAD指针回滚到指定的提交id,本地仓库、暂存区、工作区都会回滚
工作区的文件已经变成了hello git
,暂存区和本地仓库都没有文件
以上,便是reset命令中soft、mixed、hard的区别
git命令很多,还需多多总结
更多推荐
所有评论(0)