zoukankan      html  css  js  c++  java
  • GIT学习----第六节:撤销修改

    学习目的

    1. 当你在工作区修改了,但是你不想要修改的部分时,如何撤销?
    2. 当你将工作区的修改添加到暂存区,如何撤销?
    3. 当你将修改提交到分支,如何撤销?

    撤销工作区修改

    1. 修改前
    $ git diff
    
    $ cat readme.txt
    Git is a version control system.
    Git is free software.
    Git is a distributed version control system.
    Git is free software.
    添加一行测试工作区、暂存区、分支。
    cat 命令测试。
    测试修改文件后各区状态!
    测试git diff,查看工作区和分支文件的修改情况!
    再次测试git diff对比工作区和版本库最新版本的区别。
    
    1. 修改后
    $ git diff
    diff --git a/readme.txt b/readme.txt
    index 1149d4c..3bbbb47 100644
    --- a/readme.txt
    +++ b/readme.txt
    @@ -6,4 +6,5 @@ Git is free software.
     cat 命令测试。
     测试修改文件后各区状态!
     测试git diff,查看工作区和分支文件的修改情况!
    -再次测试git diff对比工作区和版本库最新版本的区别。
     No newline at end of file
    +再次测试git diff对比工作区和版本库最新版本的区别。
    +测试撤销修改。
     No newline at end of file
    
    $ cat readme.txt
    Git is a version control system.
    Git is free software.
    Git is a distributed version control system.
    Git is free software.
    添加一行测试工作区、暂存区、分支。
    cat 命令测试。
    测试修改文件后各区状态!
    测试git diff,查看工作区和分支文件的修改情况!
    再次测试git diff对比工作区和版本库最新版本的区别。
    测试撤销修改。
    
    1. 查看修改后工作区的状态
    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
            modified:   readme.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

    Git会告诉你,git checkout – file可以丢弃工作区的修改:

    $ git checkout -- readme.txt
    

    命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commit或git add时的状态。

    现在,看看readme.txt的文件内容:

    $ git diff
    
    $ cat readme.txt
    Git is a version control system.
    Git is free software.
    Git is a distributed version control system.
    Git is free software.
    添加一行测试工作区、暂存区、分支。
    cat 命令测试。
    测试修改文件后各区状态!
    测试git diff,查看工作区和分支文件的修改情况!
    再次测试git diff对比工作区和版本库最新版本的区别。
    

    可以看出工作区的文件已经回到修改之前的版本!


    注意:git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

    撤销暂存区修改

    1. 修改前
    $ cat readme.txt
    Git is a version control system.
    Git is free software.
    Git is a distributed version control system.
    Git is free software.
    添加一行测试工作区、暂存区、分支。
    cat 命令测试。
    测试修改文件后各区状态!
    测试git diff,查看工作区和分支文件的修改情况!
    再次测试git diff对比工作区和版本库最新版本的区别。
    
    1. 修改后并添加到暂存区
    $ cat readme.txt
    Git is a version control system.
    Git is free software.
    Git is a distributed version control system.
    Git is free software.
    添加一行测试工作区、暂存区、分支。
    cat 命令测试。
    测试修改文件后各区状态!
    测试git diff,查看工作区和分支文件的修改情况!
    再次测试git diff对比工作区和版本库最新版本的区别。
    修改添加到暂存区测试撤销!
    
    $ git add readme.txt
    

    2.1 查看状态

    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
            modified:   readme.txt
    

    Git同样告诉我们,用命令git reset HEAD 可以把暂存区的修改撤销掉(unstage),重新放回工作区:

    $ git reset HEAD readme.txt
    Unstaged changes after reset:
    M       readme.txt
    

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

    2.2 再次查看状态

    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
            modified:   readme.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

    Git会告诉你,git checkout – file可以丢弃工作区的修改,同时查看状态:

    $ git checkout -- readme.txt
    
    $ git status
    On branch master
    nothing to commit, working tree clean
    
    1. 撤销后
    $ cat readme.txt
    Git is a version control system.
    Git is free software.
    Git is a distributed version control system.
    Git is free software.
    添加一行测试工作区、暂存区、分支。
    cat 命令测试。
    测试修改文件后各区状态!
    测试git diff,查看工作区和分支文件的修改情况!
    再次测试git diff对比工作区和版本库最新版本的区别。
    

    撤销分支修改

    如果修改了,并且提交到分支了,想要撤销,参考GIT学习----第三节:版本回退

    1. 修改前
    $ cat readme.txt
    Git is a version control system.
    Git is free software.
    Git is a distributed version control system.
    Git is free software.
    添加一行测试工作区、暂存区、分支。
    cat 命令测试。
    测试修改文件后各区状态!
    测试git diff,查看工作区和分支文件的修改情况!
    再次测试git diff对比工作区和版本库最新版本的区别。
    
    1. 修改后并提交到分支
    $ cat readme.txt
    Git is a version control system.
    Git is free software.
    Git is a distributed version control system.
    Git is free software.
    添加一行测试工作区、暂存区、分支。
    cat 命令测试。
    测试修改文件后各区状态!
    测试git diff,查看工作区和分支文件的修改情况!
    再次测试git diff对比工作区和版本库最新版本的区别。
    修改提交到分支测试!
    
    $ git add readme.txt
    
    $ git commit -m "提交到分支的修改进行撤销提交"
    [master 076ec5c] 提交到分支的修改进行撤销提交
     1 file changed, 2 insertions(+), 1 deletion(-)
    
    1. 撤销到上个版本
    $ git reset --hard HEAD^
    HEAD is now at ffb306a 再次测试git diff提交测试
    
    1. 撤销后查看工作区内容
    $ cat readme.txt
    Git is a version control system.
    Git is free software.
    Git is a distributed version control system.
    Git is free software.
    添加一行测试工作区、暂存区、分支。
    cat 命令测试。
    测试修改文件后各区状态!
    测试git diff,查看工作区和分支文件的修改情况!
    再次测试git diff对比工作区和版本库最新版本的区别。
    

    发现的确被撤销了!世界完美了!

    小结

    1. 工作区撤销修改:git checkout – file.
    2. 暂存区撤销修改:(1)git reset HEAD ;(2)git checkout – file.
    3. 分支撤销修改:git reset --hard HEAD^.
    4. 特别注意此处撤销,是没有推送到远程版本库的撤销!没有推送到远程版本库的撤销!没有推送到远程版本库的撤销!重要的事说三遍!

    其他

    QQ交流群: 264303060

    QQ交流群

    我的博客,欢迎交流!

    我的CSDN博客,欢迎交流!

    微信小程序专栏

    前端笔记专栏

    微信小程序实现部分高德地图功能的DEMO下载

    微信小程序实现MUI的部分效果的DEMO下载

    微信小程序实现MUI的GIT项目地址

    微信小程序实例列表

    前端笔记列表

    游戏列表

  • 相关阅读:
    centos 研究
    python学习6 web开发
    python学习5 常用三方模块
    python学习4 常用内置模块
    python学习 3笔记
    SQLite
    mysql
    python学习 2数学公式
    python学习 1基础
    shell example02
  • 原文地址:https://www.cnblogs.com/linewman/p/9918422.html
Copyright © 2011-2022 走看看