git:reset操作

84 阅读1分钟

reset命令是一个挺重要的命令,毕竟基本上开发过程中无可避免的都会遇到版本回退的问题。

$ git reset HEAD^            # 回退所有内容到上一个版本  
$ git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本  
$ git  reset  052e           # 回退到指定版本

下面分析一下回退到指定版本是怎样的情况:(只探讨--soft的情况,--hard会把被回退的commit节点删掉,一般不用)
首先是master分支,在它基础上创建dev1分支:

git checkout -b dev1

然后在dev1分支上弄几个commit:

截屏2021-12-20 下午6.35.47.png

然后在dev1分支上创建dev2分支:

git checkout -b dev2

然后,执行回退命令:

 git reset --soft 5e34e35

此时的dev2: 截屏2021-12-20 下午6.37.59.png

查看状态

git status

会发现git把被回退版本(在本例子中,被回退的版本为5e34e35之后的commit节点)的内容,弄到工作区中,也就是modified状态。
可以连续回退:

git reset --soft 54696ad

git会把被回退的版本内容继续弄到工作区中。
这时的dev2状态:

截屏2021-12-20 下午6.50.18.png 这时候执行:

git stash

然后不管你切换到dev1还是master分支,都可以看到这个stash的内容

git stash list

截屏2021-12-20 下午6.53.41.png 同理,不管你在master/dev1/dev2分支执行:

git stash clear

这个stash记录都会被删除。