Git的回滚
Git常用命令:
git add . #进行提交
git commit -m v2 #v2版本
cat index.html #查看文件内容已经变化
git log #获取到提交信息
git reset --hard 50127d43d2dc #执行回滚,后面需要跟commit ID
cat index.html #再次查看文件内容发现已经回滚到v1版本
git log #发现无法获取到v2版本commt id
git reflog #获取到所有的历史提交信息
git reset --hard 7ff3f54 #回滚到版本2
git不同阶段回滚
1.工作目录
2.暂存区域
3.仓库版本回滚
演示:撤销工作区的内容
第一步:创建一个文件
[root@docker2 git_test]# cat 1.txt 11111 222 [root@docker2 git_test]# echo 'test1' >> 1.txt [root@docker2 git_test]# echo 'test2' >> 1.txt
第二步:把这个文件添加到缓存区
[root@docker2 git_test]# git add .
第三步:在文件追加内容
在包含.git的目录中,只要当前目录下的文件有修改都会自动进入工作区(该文件必须被commit过,否则无法追踪)
所以下面当往文件e.tt中添加test3的时候。e.tt这个文件就进入到了工作区了。
1.文件进入工作区 :包含.git隐藏文件的目录中,文件修改就会自动进入
2.文件进入缓存区 :git add .
3.文件进入仓库 :git commit -m ‘v1’
[root@docker2 git_test]# echo "test3" >> 1.txt
第四步:查看工作区
[root@docker2 git_test]# git status
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 修改: 1.txt
#
# 尚未暂存以备提交的变更:
# (使用 "git add <file>..." 更新要提交的内容)
# (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
# 修改: 1.txt
#
第五步:撤销工作区的内容
使用命令git checkout — filename即可进行回滚 [root@docker2 git_test]# git checkout -- 1.txt #数据回滚 [root@docker2 git_test]# git status #查看状态 # 位于分支 master # 要提交的变更: # (使用 "git reset HEAD <file>..." 撤出暂存区) # # 修改: 1.txt # [root@docker2 git_test]# cat 1.txt #查看文件内容,发现test3内容已经没有了 11111 222 test1 test2
演示:撤销缓存区的内容
第一步:创建文件并进行提交
[root@ken kenken]# echo "1111">k.tt [root@ken kenken]# git add k.tt [root@ken kenken]# git commit -m "k.tt" [root@ken kenken]# git log commit c5f46907ce0dfd6722b091fa7a7053ff48507ace Author: ken <1614833@qq.com> Date: Tue Nov 20 12:42:30 2018 +0800 k.tt
第二步:修改文件并加入到缓存区中
第一步一定要提交,才能看到效果
[root@docker2 git_test]# echo 666 >> 1.txt [root@docker2 git_test]# echo 777 >> 1.txt [root@docker2 git_test]# git add . [root@docker2 git_test]# git status
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 修改: 1.txt
第三步:缓存区进行回退
[root@docker2 git_test]# git reset HEAD 1.txt
重置后撤出暂存区的变更:
M 1.txt
第四步:缓存区进行回退
[root@docker2 git_test]# git status
# 位于分支 master
# 尚未暂存以备提交的变更:
# (使用 "git add <file>..." 更新要提交的内容)
# (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
# 修改: 1.txt
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
第五步:工作区进行回滚
其实现在就已经回到了演示2中了
回退完成之后可以发现之前写的666和777 已经没有了
[root@docker2 git_test]# git checkout -- 1.txt [root@docker2 git_test]# git status # 位于分支 master 无文件要提交,干净的工作区 [root@docker2 git_test]# cat 1.txt 11111 222
演示:撤销仓库中的内容
第一步:查看历史版本
我们现在处于1.txt中,现在希望回到v3中
[root@docker2 git_test]# git log commit a7dbf086621335d775596ba834150d0407bcb736 Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 20:40:32 2019 +0800 v4 commit baeec2884d5d9fec0e17eac4069dcc6ce1e39595 Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 20:40:02 2019 +0800 v3 commit 14820ed1cce6df5e5a5d5129f8fd0c5f54bf5b8a Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 19:48:16 2019 +0800 v2 commit 72b6d22dfbba2b0f01c74bf0ea105875b8b2edf8 Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 19:44:12 2019 +0800 v1
第二步:查看所需要回滚的版本的commit值
通过上面我们可以看到v3的commit值commit baeec2884d5d9fec0e17eac4069dcc6ce1e39595
第三步:执行回滚操作
commit值没有必要全部写出来,只要写一部分就可以了
[root@docker2 git_test]# git reset --hard baeec2884d
HEAD 现在位于 baeec28 v3
第四步:查看版本状态
现在我们处于v3版本之中
[root@docker2 git_test]# git log commit baeec2884d5d9fec0e17eac4069dcc6ce1e39595 Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 20:40:02 2019 +0800 v3 commit 14820ed1cce6df5e5a5d5129f8fd0c5f54bf5b8a Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 19:48:16 2019 +0800 v2 commit 72b6d22dfbba2b0f01c74bf0ea105875b8b2edf8 Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 19:44:12 2019 +0800 v1
第五步:回退到v4版本中
我们知道回退版本需要用到commit值
但是现在通过git log已经看不到v4的commit值了,现在怎么办呐?
可以通过git reflog查看所有的历史操作
找到v4前面的值即可
[root@docker2 git_test]# git reflog baeec28 HEAD@{0}: reset: moving to baeec2884d a7dbf08 HEAD@{1}: commit: v4 baeec28 HEAD@{2}: commit: v3 14820ed HEAD@{3}: reset: moving to 14820ed 72b6d22 HEAD@{4}: reset: moving to 72b6d22dfbba2b0f01c74bf0ea105875b8b2edf8 14820ed HEAD@{5}: commit: v2 72b6d22 HEAD@{6}: commit (initial): v1
第六步:回滚到v4版本
root@docker2 git_test]# git reset --hard a7dbf08 HEAD 现在位于 a7dbf08 v4 [root@docker2 git_test]# git log commit a7dbf086621335d775596ba834150d0407bcb736 Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 20:40:32 2019 +0800 v4 commit baeec2884d5d9fec0e17eac4069dcc6ce1e39595 Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 20:40:02 2019 +0800 v3 commit 14820ed1cce6df5e5a5d5129f8fd0c5f54bf5b8a Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 19:48:16 2019 +0800 v2 commit 72b6d22dfbba2b0f01c74bf0ea105875b8b2edf8 Author: wuxun <1449460157@qq.com> Date: Mon Nov 11 19:44:12 2019 +0800 v1
-------------------------------------------
个性签名:学IT,就要做到‘活到老学到老’!
如果觉得这篇文章对你有小小的帮助的话,别忘记点个“推荐”哦!