史上最简单的git教程|第五篇:撤销历史修改的几种情况分析

     回顾:上一篇我们讲到了如何查看提交历史,学会了git log命令的使用,但是在工作的时候,我们经常会误改文件问题,所以这篇主要来讲如何撤销我们之前的提交。
     我先创建了一个git.txt文件,并且在里面添加了一行boss is smart,我们通过cat命令查看一下

$ cat  git.txt
boss is so  smart

     然后再修改文件添加一句话:i love you ,再次查看下当前文件

$ cat git.txt
boss is smart
I love you

     撤销操作分为两种:

  1. 已经提交到了版本库,撤销回到上一个版本库
    回到上一个版本库:
    ^一个指的是上一个版本,HEAD~10表示上十个版本
$ git  reset --hard HEAD^
HEAD is now at f5881e4 git.txt
//查看一下当前文件 发现少了 i love you 回到了之前的版本 
$ cat git.txt
boss is smart

     但是假如我想回到指定版本呢???我们需要通过git log 打印出提交历史,gitlog忘记使用的小伙伴可以看这篇哦——史上最简单的git教程|第四篇:查看提交历史-git log的使用。前面的一串英文加数字其实是commit ID ,你每次提交都会产生这个ID。

//git log --pretty=oneline
d7cf4e47d37a632a8daddb5606e1fa681bb8aae7 (HEAD -> master) 
f5881e45ba013b486f58322a9ca894f7a39974c2 git.txt  

     通过具体commit ID号回退到想回的版本

$ git reset --hard f5881e45ba013b486f58322a9ca894f7a39974c2 
//再次查看git文件 发现真的回到了初始版本 
$ cat git.txt
boss is smart

     看到这是否会有一个疑问 :假如找不到commit ID 了呢,比如你关掉了git bach ,不用担心再来学一个新的命令: git reflog 他会打印出commit 记录 ,前面就是简写的commit ID
这里写图片描述


  1. 工作区的内容修改之后并添加到了暂存区,但是没有commit到版本库。
//重新新建了hello.txt  并git  add 进入到 暂存区

     打印日志查看当前状态 git status

$ git status
On branch master
Changes to be committed:   (这句英文表示在暂存区,等待提交到版本库) 
  (use "git reset HEAD <file>..." to unstage)
        modified:   hello.txt

     那么我们如何将这部分内容从暂存区中移除到工作区呢?

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

     再来打印下日志看看现在是什么状态了:

$ 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:   hello.txt

     所以我们得想法抛弃工作区的修改:

$ git checkout -- hello.txt

     再次查看一下状态:

$ git status
On branch master
nothing to commit, working tree clean

     终于清理干净了工作区。成功。


上一篇:史上最简单的git教程|第四篇:查看提交历史-git log的使用
下一篇:史上最简单的git教程|第六篇:谨慎删除git文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mindcarver

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值