撤销修改

自然,你是不会犯错的。不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
My stupid boss still prefers SVN.

在你准备提交前,一杯咖啡起了作用,你猛然发现了stupid boss可能会让你丢掉这个月的奖金!

既然错误发现得很及时,就可以很容易地纠正它。你可以删掉最后一行,手动把文件恢复到上一个版本的状态。如果用git status查看一下:

$ 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.txtno 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 commitgit add时的状态。

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

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

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

现在假定是凌晨3点,你不但写了一些胡话,还git add到暂存区了:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
My stupid boss still prefers SVN.$ git add readme.txt

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

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

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

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

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

再用git status查看一下,现在暂存区是干净的,工作区有修改:

$ 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

还记得如何丢弃工作区的修改吗?

$ git checkout -- readme.txt`在这里插入代码片`$ git status
On branch master
nothing to commit, working tree clean

整个世界终于清静了!

现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?可以回退到上一个版本。不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把stupid boss提交推送到远程版本库,你就真的惨了……

小结
又到了小结时间。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。`

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

时光穿梭机(撤销修改)相关推荐

  1. Git 进阶 —— 时光穿梭机

    主要内容 版本回退 工作区和暂存区 管理修改 撤销修改 删除文件 一.两条基本查看命名 查看状态命令:git status 查看修改内容命令:git diff 实例 思路:修改readme.txt文本 ...

  2. git学习之时光穿梭机

    "x"修改readme.txt文件,改成如下内容: Git is a distributed version control system. Git is free softwar ...

  3. git时光穿梭机总结

    git时光穿梭机总结 版本回退 工作区和暂存区 管理修改 撤销修改 删除文件 版本回退 git log //查看历史版本,版本库状态 git log --pretty=oneline //简化显示 像 ...

  4. git与github——1,简介、安装及设置账号、创建版本库及提交文件、常用命令汇总、git的时光穿梭机

    目录 一.git是什么? 1,git与github 2,分布式与集中式 二.安装.设置账号.设置ssh 1.安装.设置账号 2,设置ssh 三.创建版本库及提交文件 1,创建版本库 2,添加文件到版本 ...

  5. 时光穿梭机特效如何制作?建议试试这个时光机穿梭工具

    时光机特效(Time Machine Effect)是一种通过编辑软件创造的图像效果,它可以让您的照片看起来像是从过去或未来穿越而来的.这种效果是通过改变图像的颜色.对比度.曝光和色调等参数来实现的. ...

  6. 2:哆来A梦的时光穿梭机

    哆来A梦的时光穿梭机 修改readme.txt文件如下,提交到Git版本库[root@Web_server learngit]# cat  readme.txt Git is a distribute ...

  7. Git基础之(四)——时光穿梭机——版本回退

    现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...

  8. 【Git】Git 本地的撤销修改和删除操作

    一:撤销操作 比如我现在在readme.txt文件里面增加一行 内容为555555555555,我们先通过命令查看如下: 在我未提交之前,我发现添加5555555555555内容有误,所以我得马上恢复 ...

  9. git 撤销修改以及删除文件(亲测最后一个删除后还原)

    撤销修改 1.如果当你修改了代码,然后又发现修改错误以后,想撤销前面的操作的时候该怎么办呢? 既然错误发现得很及时,就可以很容易地纠正它.你可以删掉最后一行,手动把文件恢复到上一个版本的状态.如果用 ...

最新文章

  1. 程序员必备网站之一:No Design
  2. 从零搭建React全家桶框架教程
  3. NSString之Format
  4. 第一个问题就难倒我了!
  5. 微服务网关 Kong 科普
  6. PHP各种数据类型转换
  7. 开课吧课程:什么是TreeSet类
  8. mysql双机数据热备份_教你怎么样实现MySQL数据库双机热备份
  9. 关于Eclipse优化记录
  10. grep指令与ps指令的详细使用说明
  11. java重新温习基础笔记
  12. c盘减肥//请在阅读本文之前查看你C盘的可用空间
  13. Fluentd (td-agent) 日志处理
  14. Relative Orientation 与fundamental essential matrix
  15. 4月8日链家考试感想
  16. 5G到底什么时候来,它究竟能给我们带来什么?
  17. Ubuntu下使用opencv完成图像程序编程操作
  18. 10.5国庆作业(IIC实验)
  19. 6waves VP张伟:洞悉SLG等品类赛道,直击日本市场的趋势与机遇
  20. PaaS平台升级NFS报错排除

热门文章

  1. Syste类 及常用方法
  2. 关于CClientDC与CPAINTDC,以及GetDC与GetWindowDC。
  3. Speedoffice(excel)如何利用SUMIF函数求和
  4. 工程材料学习2——第一章 材料的结构与性能特点
  5. 使用git将远程仓库和本地仓库关联
  6. Flex在线文档阅读器::pdf、doc、docx、xls、xlsx、ppt、pptx、htm、txt、rtf、epub、csv、xdoc等
  7. 美苏太空竞赛历年卫星火箭发射以及历史事件介绍
  8. 小程序流量主怎么赚钱?小程序流量主怎么变现?
  9. msconfig提示系统配置无法保存原始启动配置以便以后还原的解决方法
  10. python账号怎么注销_登录后如何注销