• 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
  • 相关阅读:
    【python练习题】实现字符串反转
    Oracle账号
    selenium自动化测试资源整理(含所有版本chrome、chromedriver、firefox下载链接)
    【Selenium 3+Java自动化(6)】-CSS定位语法
    【Selenium 3+Java自动化(5)】-xpath定位
    【Selenium 3+Java自动化(4)】-八种元素定位
    【Selenium 3+Java自动化(4)】- 启动IE
    【Selenium 3+Java自动化(3)】- 启动Chrome
    【Selenium 3+Java自动化(2)】- 启动firefox
    【Selenium 3+Java自动化(1)】- 环境搭建
  • 原文地址:https://www.cnblogs.com/twoo/p/11933207.html
Copyright © 2020-2023  润新知