zoukankan      html  css  js  c++  java
  • git 命令行(一)-版本回退

    1. 版本回退

    在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用 git log 命令查看:

    退出git log命令行是: q

    Git提供了一个命令 git reflog 用来记录你的每一次命令:

    如果我们要实现回退, Git必须知道当前版本是哪个版本,在Git中,用 HEAD 表示当前版本,也就是最新的提交009befc...711741(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^ ,上上一个版本就是 HEAD^^ ,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

    现在,我们要把当前版本回退到上一个版本,就可以使用 git reset 命令:

    我们也可以是使用 commit_id 来在不同版本之间回退

    使用 git commit命令将文件添加到本地仓库,要撤销文件修改,可以使用如下命令:

    git reset --hard commit_id

    2. 版本库(Repository)

    工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

    Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

    前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

    第一步是用 git add 把文件添加进去,实际上就是把文件修改添加到暂存区;

    第二步是用 git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支。

     2. 撤销修改

        1. 在Git中,git checkout -- file 可以丢弃工作区的修改

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

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

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

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

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

    2. 如果我们修改了文件还 git add 到暂存区了,庆幸的是,在commit之前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,还没有提交:

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

       git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。再用git status查看一下,现在暂存区是干净的,工作区有修改:然后按照第一步的方法回退。总结如下:

  • 相关阅读:
    Python os模块介绍
    (转) JAVA中如何设置图片(图标)自适应Jlable等组件的大小
    (转)统计学习-2 感知机知识准备(模型类型、超平面与梯度下降法)
    详细讲述MySQL中的子查询操作 (来自脚本之家)
    (转)详解数据库的自然连接
    MySQL 数据类型 详解
    MySql详解(四)
    MySql详解(五)
    MySql详解(七)
    MySql详解(一)
  • 原文地址:https://www.cnblogs.com/xuzhudong/p/9052594.html
Copyright © 2011-2022 走看看