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 .txt 

[root@docker2 git_test]# echo 'test1' >> .txt
[root@docker2 git_test]# echo 'test2' >> .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" >> .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 -- .txt #数据回滚
[root@docker2 git_test]# git status #查看状态
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 修改: .txt
#
[root@docker2 git_test]# cat .txt #查看文件内容,发现test3内容已经没有了 test1
test2

演示:撤销缓存区的内容

第一步:创建文件并进行提交

[root@ken kenken]# echo "">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 <@qq.com>
Date: Tue Nov :: + k.tt

第二步:修改文件并加入到缓存区中
第一步一定要提交,才能看到效果

[root@docker2 git_test]# echo  >> .txt
[root@docker2 git_test]# echo >> .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 .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 -- .txt
[root@docker2 git_test]# git status
# 位于分支 master
无文件要提交,干净的工作区
[root@docker2 git_test]# cat .txt

演示:撤销仓库中的内容

第一步:查看历史版本
我们现在处于1.txt中,现在希望回到v3中

[root@docker2 git_test]# git log
commit a7dbf086621335d775596ba834150d0407bcb736
Author: wuxun <@qq.com>
Date: Mon Nov :: + v4 commit baeec2884d5d9fec0e17eac4069dcc6ce1e39595
Author: wuxun <@qq.com>
Date: Mon Nov :: + v3 commit 14820ed1cce6df5e5a5d5129f8fd0c5f54bf5b8a
Author: wuxun <@qq.com>
Date: Mon Nov :: + v2 commit 72b6d22dfbba2b0f01c74bf0ea105875b8b2edf8
Author: wuxun <@qq.com>
Date: Mon Nov :: + 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 <@qq.com>
Date: Mon Nov :: + v3 commit 14820ed1cce6df5e5a5d5129f8fd0c5f54bf5b8a
Author: wuxun <@qq.com>
Date: Mon Nov :: + v2 commit 72b6d22dfbba2b0f01c74bf0ea105875b8b2edf8
Author: wuxun <@qq.com>
Date: Mon Nov :: + v1

第五步:回退到v4版本中
我们知道回退版本需要用到commit值
但是现在通过git log已经看不到v4的commit值了,现在怎么办呐?
可以通过git reflog查看所有的历史操作
找到v4前面的值即可

[root@docker2 git_test]# git reflog
baeec28 HEAD@{}: reset: moving to baeec2884d
a7dbf08 HEAD@{}: commit: v4
baeec28 HEAD@{}: commit: v3
14820ed HEAD@{}: reset: moving to 14820ed
72b6d22 HEAD@{}: reset: moving to 72b6d22dfbba2b0f01c74bf0ea105875b8b2edf8
14820ed HEAD@{}: commit: v2
72b6d22 HEAD@{}: 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 <@qq.com>
Date: Mon Nov :: + v4 commit baeec2884d5d9fec0e17eac4069dcc6ce1e39595
Author: wuxun <@qq.com>
Date: Mon Nov :: + v3 commit 14820ed1cce6df5e5a5d5129f8fd0c5f54bf5b8a
Author: wuxun <@qq.com>
Date: Mon Nov :: + v2 commit 72b6d22dfbba2b0f01c74bf0ea105875b8b2edf8
Author: wuxun <@qq.com>
Date: Mon Nov :: + v1

Git的回滚的更多相关文章

  1. Git如何回滚代码?

    摘要: 多年以后,你面对一个需要回滚的Git仓库,准会想起这篇博客. 某一天,用户跟我反馈,他不能分配任务了.我去看了一下Fundebug捕获的报错信息: 可知,出错原因是前端发送的请求参数有问题.这 ...

  2. git代码回滚的两种选择

    回滚到指定commit,且保持该commit之前和之后的提交记录 使用git revert命令. git revert HEAD // 回滚到前一次 commit git revert HEAD^ / ...

  3. git如何回滚当前修改的内容?

    git如何回滚当前修改的内容? 1.打开git gui,在工具栏上点击 commit ,选择 Revert Changes,  这里可以回滚单个文件: 2.一键回滚所有修改: 打开git gui,在工 ...

  4. git代码回滚:Reset、Checkout、Revert的选择

    代码回滚:Reset.Checkout.Revert的选择 Zhongyi Tong edited this page on Dec 8, 2015 · 5 revisions Pages 19 Ho ...

  5. git版本号回滚

    先说今天遇到的问题,看到一个config.php的配置文件一直在改动的状态下,可是和远程的config.php是不一致的,我不须要提交它,可是看它在 modified的状态下,非常不爽.想删除它.gi ...

  6. git 版本回滚

    1.克隆代码到本地 git clone http://qtools@dev.qtoolsbaby.cn:81/gitlab/qtools/jenkins_ceshi.git 2.git log 查看所 ...

  7. Git撤销&回滚操作

    https://blog.csdn.net/ligang2585116/article/details/71094887 开发过程中,你肯定会遇到这样的场景: 场景一: 糟了,我刚把不想要的代码,co ...

  8. 6.Git代码回滚

    1.代码修改并提交 我们已经成功地添加并提交了一个helloWorld.txt文件,现在,是时候继续工作了. 于是,我们继续修改helloWorld.txt文件,改成如下内容: $ vi helloW ...

  9. git 分回滚后无法合并代码问题

    git reset & git revert 区别: 1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit. 2. 在回滚 ...

随机推荐

  1. JAVA 运行springboot jar包设置classpath

    Java 命令行提供了如何扩展bootStrap 级别class的简单方法. -Xbootclasspath: 完全取代基本核心的Java class 搜索路径.不常用,否则要重新写所有Java 核心 ...

  2. LeetCode 200:岛屿数量 Number of Islands

    题目: 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. Given ...

  3. find命令常用场景

    1.查找/var目录下属主为root并且属组为mail的所有文件: find /var -user root -group mail 2.查找/usr目录下不属于root,bin,或student的文 ...

  4. Python字典(Dictionary)update()方法

    原文连接:https://www.runoob.com/python/att-dictionary-update.html Python字典(dictionary)update()函数把字典dict2 ...

  5. Kubernetes configMap(配置文件存储)

    Kubernetes configMap(配置文件存储) 官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure ...

  6. .NET WebFrom跨时区项目时间问题处理方法

    前段时间因为公司的一个 WebFrom 项目设计到跨时区的问题,处理了一段时间,终于解决了,写个博客记录一下,方便以后回顾以及给他人提供一个参考的方法. 本次的项目因为跨越了多个时区,在一些时间上会受 ...

  7. 【随笔】CLR:.net的类型,内部到底长啥样?

    前言 一提到.net的类型,首当其冲的就是“引用类型”.“值类型”:我们在面试中,也会经常被问“来说说值类型和引用类型....”,这时候第一反应就是:“哎呀,这还不简单,值类型是传递的值的copy,值 ...

  8. 微信和QQ可以关闭广告了,每次能关6个月

    微信和QQ可以关闭广告了,这次腾讯真的是良心了,虽然不能完全关闭,但是每次能关6个月,也能清静不少时间. 关闭地址:点击进入

  9. PHP MySQL数据分页

    SQL SELECT语句查询总是可能导致数千条记录.但是在一个页面上显示所有结果并不是一个好主意.因此,我们可以根据要求将此结果划分为多个页面.分页意味着在多个页面中显示您的查询结果,而不是仅将它们全 ...

  10. 【已采纳】supervisor在服务器端(linux),如何一直运行你的python代码

    正式开始之前,说一下我的项目是放在虚拟环境里的,具体什么是虚拟环境,怎么创建,请自行百度噢!   一.安装 源码安装 先下载最新的supervisor安装包:https://pypi.python.o ...