zoukankan      html  css  js  c++  java
  • 【Git】03 撤销 & 版本回退

    回退分为三种情况,每种情况对应了我们文件的存储区域

    工作区
      |
    暂存区
      |
    版本区(当前分支)

    1、文件可能存放在工作区,没有被Git追踪【红色标记状态】

    2、文件可能已经添加到暂存区,没有被Git提交到版本分支中【绿色状态】

    3、文件可能已经在版本分支中

    1、在工作区的撤销

    首先查看Git当前状态:

    对我们工作区的文件进行内容更改:

    vim text.txt
    A new content insert this file...

    再次查看,很显然的,更改后的文件,Git就会标记为未追踪的文件

    如果要撤销回到最初的样子【这是撤销命令】

    git checkout 文件名称

    可以查看文件的状态:

    之前添加的内容已经没有了,Git仓库状态显示未没有需要提交的,工作树干净

    2、在暂存区中的撤销

    现在重新添加内容,并且提交到暂存区中:

    文件添加进暂存区:

    对暂存区的文件撤销,即把文件从暂存区拉回到工作区:

    git reset HEAD -- 文件名称

    如果撤销所有暂存区的文件,可以:

    git reset HEAD -- .

    或者直接删除暂存区中的文件:

    git rm --cached 文件名称

    3、在版本分支中的版本回退:

    首先把text.txt文件进行提交,每一次提交代表了一个版本存储在版本分支中:

    每一个版本都具有独一无二的版本序列号,例如下图的黄色字符串

    SVN是一个服务器集中式的版本控制系统,所有的版本控制统一在SVN中执行

    但是Git是一个分布式的版本控制系统,每一个人都有独立的本地仓库

    版本不会统一在SVN中,每一个开发者的仓库中的版本号就有可能会一样,这样把版本提交到统一的仓库中就会发生问题

    版本冲突,所以为了解决这个问题,Git使用了这种奇特的序列号作为版本号,以防止版本冲突

    例如现在最新的版本是第三次提交,而我们希望回退到第二版本或者更早的。。。

    首先是回退到上一个版本

    这里一共三个版本,最新版本就是第三次提交

    执行这个命令以后可以看到,当前的版本到了第二次提交了

    git reset --hard HEAD^

    如果要回退临近的几个版本,^表示上一个版本,多个^就表示之前的第n个

    git reset --hard HEAD^^^^ ...

    指令的意思就很明确了,从头开始回退到第N个版本

    但是如果我们希望回退到指定的版本,可以声明版本号来回退:

    git reset --hard 版本号

  • 相关阅读:
    20162320刘先润大二 实验三 查找与排序
    20162320刘先润大二第9周学习总结
    20162320大二第8周学习总结
    20162320刘先润大二 实验二
    20162321王彪 2016-2017-2《程序设计与数据结构》课程总结
    实验五 数据结构综合应用
    20162321-王彪-实验四总结
    王彪-20162321《程序设计与数据结构2nd》-第十一周学习总结与实验报告
    王彪-20162321-Java程序设计与数据结构2nd-第十周学习总结
    实验三-总结博客
  • 原文地址:https://www.cnblogs.com/mindzone/p/13500427.html
Copyright © 2011-2022 走看看