前言
前面已经简单的介绍了如何使用git,我们也知道每一次提交,都是属于一次版本,如果目前我们正在发布的版本有问题,想要回退,这个时候应该怎么做呢?
git reset命令介绍
git reset 表示用于回退版本的操作,也可以执行对应的版本进行回退
git reset [--soft | --mixed | --hard] [HEAD]
git reset --soft 表示:回退到某个版本,只回退了commit的信息,修改完本地代码后,可以重新提交
git reset --mixed 表示:表示默认参数,为了重置暂存区的文件和上一次文件保持一致
git reset --hard 表示:表示回退到对应的版本。本地代码也会进行回退
版本回退
1、我们现在在一个git仓库中新建一个txt文件,然后将它提交到远程仓库中
[root@anjing git_test]# vi 111.txt [root@anjing git_test]# cat 111.txt 这是第一次提交的记录:01 [root@anjing git_test]# git add . [root@anjing git_test]# git commit -m "第一次提交txt文件" [master 36b821d] 第一次提交txt文件 1 file changed, 1 insertion(+), 1 deletion(-)
2、我们可以通过 git reflog 来查看我们的git仓库有那些提交,并且可以看到前面每个版本的版本号
[root@anjing git_test]# git reflog 36b821d (HEAD -> master) HEAD@{0}: commit: 第一次提交txt文件 671846d (origin/master) HEAD@{1}: commit: 新增一个txt文件 2bf9c6d HEAD@{2}: commit (initial): 新增一个md文件
3、这里为了表示明显,我们再来一次提交
[root@anjing git_test]# vi 111.txt [root@anjing git_test]# cat 111.txt 这是第一次提交的记录:01 --------------------------- 这是第二次提交的记录:02 [root@anjing git_test]# git add . [root@anjing git_test]# git commit -m "第二次提交txt文件" [master e393ccd] 第二次提交txt文件 1 file changed, 2 insertions(+)
4、再次查看我们历史提交记录
[root@anjing git_test]# git reflog e393ccd (HEAD -> master) HEAD@{0}: commit: 第二次提交txt文件 36b821d HEAD@{1}: commit: 第一次提交txt文件 671846d (origin/master) HEAD@{2}: commit: 新增一个txt文件 2bf9c6d HEAD@{3}: commit (initial): 新增一个md文件 [root@anjing git_test]#
5、这里我们发现代码有问题,想要回退到第3笔提交,这个时候我们可以通过git reset 这个命令 git reset --hard 版本号
[root@anjing git_test]# git reset --hard 36b821d HEAD is now at 36b821d 第一次提交txt文件 [root@anjing git_test]# cat 111.txt 这是第一次提交的记录:01 [root@anjing git_test]# git reflog 36b821d (HEAD -> master) HEAD@{0}: reset: moving to 36b821d e393ccd HEAD@{1}: commit: 第二次提交txt文件 36b821d (HEAD -> master) HEAD@{2}: commit: 第一次提交txt文件 671846d (origin/master) HEAD@{3}: commit: 新增一个txt文件 2bf9c6d HEAD@{4}: commit (initial): 新增一个md文件
这里我们会发现上面的截图中HEAD-->指向的是第一次提交的版本记录,从文本内容中也可以看的出来,我们已经将其回退到了对应的版本
上传代码仓库
我们已经对代码进行了回退,那么我们将我们回退的代码推到我们的代码仓库,使用git push 的命令
去我们的远程仓库上,这里安静的远程仓库是gitee上地址,发现我们已经对gitee上进行了提交。
在另一个文件夹中可以看到我们这里的git版本还是我们第一次提交的内容
通过git pull 进行拉去远程代码仓库的内,这个时候就发现远程代码已经拉去到了本地