Git版本控制系统回退操作
概念图:
1.工作区回退
1)在file1文件中随便写点内容 [root@192 data_git]# cat file1 jiangxl jkhdlksadhks sahdj; 'ad 2)可以通过git status命令看到撤销使用什么命令 [root@192 data_git]# git status # 位于分支 master # 尚未暂存以备提交的变更: # (使用 "git add <file>..." 更新要提交的内容) # (使用 "git checkout -- <file>..." 丢弃工作区的改动) # # 修改: file1 # 修改尚未加入提交(使用 "git add" 和/或 "git commit -a") 3)回退 [root@192 data_git]# git checkout file1 [root@192 data_git]# cat file1 jiangxl
2.暂存区退回到本地文件修改
很多时候修改完代码并提交至暂存区后才发现代码写的有问题,这时需要回退,回退流程:先将暂存区的内容回退到工作区,在从工作区退回到本地文件
1)在文件中新增内容 [root@192 data_git]# vim file1 jiangxl sdjkhj dal [root@192 data_git]# git add . 2)使用git status可以看到撤出暂存区的命令 [root@192 data_git]# git status # 位于分支 master # 要提交的变更: # (使用 "git reset HEAD <file>..." 撤出暂存区) # # 修改: file1 # 3)撤回暂存区 [root@192 data_git]# git reset HEAD file1 重置后撤出暂存区的变更: M file1 4)虽然撤出来了,但是内容还没有变,因此需要撤回工作区 [root@192 data_git]# cat file1 jiangxl sdjkhj dal [root@192 data_git]# git checkout file1 [root@192 data_git]# cat file1 jiangxl
3.上传至本地仓库回退
1)将代码进行第一次修改并上传至本地仓库 [root@192 data_git]# cat file1 jiangxl sadj sdjl;a akjskl [root@192 data_git]# git add . [root@192 data_git]# git commit -m "第一次修改" [master a5fe3d8] 第一次修改 2)再次将代码修改并上传至本地仓库 [root@192 data_git]# cat file1 jiangxl sadj sdjl;a akjskl adhkl dsahj' [root@192 data_git]# git add . [root@192 data_git]# git commit -m "第二次修改" [master 284ef4c] 第二次修改 3)查看本地仓库所有的代码版本 [root@192 data_git]# git log
4)回退至只有jiangxl版本的file文件 [root@192 data_git]# git reset --hard 19cb099ca8915ec44c51ead09c7f7a68159a82dc HEAD 现在位于 19cb099 file1--jiangxl [root@192 data_git]# cat file1 jiangxl 再次使用git log会发现已经没有了回退之前的所有版本 [root@192 data_git]# git log commit 19cb099ca8915ec44c51ead09c7f7a68159a82dc Author: jiangxl <jiangxl@mail.com> Date: Sat Aug 15 21:43:31 2020 +0800 file1--jiangxl commit f71ed910db685f63de2dea84996011b2797b34b5 Author: jiangxl <jiangxl@mail.com> Date: Fri Aug 14 21:43:34 2020 +0800 file1~file3 5)别急,reflog记录所有版本 [root@192 data_git]# git reflog 19cb099 HEAD@{0}: reset: moving to 19cb099ca8915ec44c51ead09c7f7a68159a82dc 284ef4c HEAD@{1}: commit: 第二次修改 a5fe3d8 HEAD@{2}: commit: 第一次修改 19cb099 HEAD@{3}: commit: file1--jiangxl f71ed91 HEAD@{4}: commit (initial): file1~file3
6)回退至第一次修改 [root@192 data_git]# git reset --hard a5fe3d8 HEAD 现在位于 a5fe3d8 第一次修改 [root@192 data_git]# cat file1 jiangxl sadj sdjl;a akjskl