首页 文章 git reset详解

git reset详解

来源:https://blog.csdn.net/qq_39852676/article/details/129094985 发布时间:2023-11-29 19:42:44 作者:Soul-Yang 阅读量:29

在开发过程中有时候可能在执行完git commit之后发现代码有问题,需要撤除提交,这时候我们可以使用以下git reset命令来实现

比较常见的git reset命令包括

  • mixed 重置HEAD和index,默认参数,保留工作区
  • soft 重置 HEAD,保留index区和工作区,让仓库恢复到执行git commit之前的状态
  • hard 重置HEAD,index和工作区

一、git提交流程复习


1、默认情况下工作区,暂存区和本地仓库区是一样的

2、当工作区文件发生变化后,工作区和其他两个区会产生差别

3、当我们使用git add命令把文件添加到暂存区后,工作区和暂存区保持一样的状态,只有和本地仓库区不同

4、最后当我们执行完git commit命令后,三个区域又都变为一样的,这个时候HEAD指针会指向最近的一次commit

重置版本

使用reset命令,可通过移动HEAD指针达到回退版本的目的,重要信息:reset不是回退到HEAD指针,而是重置HEAD指针,即移动HEAD指针,
reset  --soft
git reset --soft < commit-id>

将指针指向 暂存区的内容变为两个版本之间的差异(改动),工作区内容不变,仍然为旧HEAD的内容


reset 【--mixed】

git reset < commit-id>

--mixed为默认参数,将指针指向 暂存区的内容变为,工作区内容不变,仍然为旧HEAD的内容


reset  --hard
git reset --hard <commit-id> 将指针指向<commit-id> ,暂存区和工作内容都变为<commit-id>版本内容
特点:都改变HEAD指针到,程度(reset-soft, reset, reset-hard)逐步扩大,只有reset-hard重置时,才会实际修改当前代码,其余两种会有一点细微区别

支持^和~
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard HEAD~10
关于--hard
--hard 会覆盖暂存区和工作区的内容,但是还有一些恢复的方法的,即使使用了--hard,一些提交不见了,但他们仍然存在git的仓库当中,还记得提交号的话,就可以再次将HEAD指回,(依然使用reset命令)原来的提交,由于有暂存区和工作区是不受控的,即使恢复了版本工作区的内容和暂存区(改动)将无法找回。




  
留言
https://blog.key9.cn/
用户登录
您还没有写任何评论内容!
您已经评论过了!
只能赞一次哦!
您已经收藏啦!