博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git之撤销修改
阅读量:4210 次
发布时间:2019-05-26

本文共 1040 字,大约阅读时间需要 3 分钟。

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

这里写图片描述

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

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

这里写图片描述

你可以发现”git checkout – file”可以丢弃工作区的修改

这里写图片描述

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

- 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态(也就是因为还没add,所以会回到上一次commit的状态)

-一种是readme.txt在被添加到暂存区之后作了修改,现在撤销修改就会回到添加到暂存区后的状态(已经被add,所以会回到上一次add的状态)

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

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

这里写图片描述

文件内容果然复原了

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

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

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

这里写图片描述

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

这里写图片描述

整个世界终于清静了!

总结:

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

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

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

你可能感兴趣的文章
UNIX高级环境编程-信号相关函数笔记
查看>>
unix编程专题-信号机制使用实例
查看>>
UNIX网络编程卷1:套接字联网-第5章:TCP客户/服务器程序示例
查看>>
UNIX编程专题-wait和waitpid详解
查看>>
UNIX编程专题-wait和waitpid详解2
查看>>
UNIX编程专题-服务器进程终止/服务器主机崩溃/服务器主机崩溃后重启/服务器主机关机
查看>>
UNIX编程专题-TCP连接探测详解
查看>>
UNIX编程专题-描述符集介绍和相关操作
查看>>
Linux IO模式及 select、poll、epoll详解
查看>>
UNIX编程专题-I/O复用:select、pselect、poll和epoll解析
查看>>
LINUX编程专题-I/O复用:epoll解析
查看>>
Linux源码解析-poll机制
查看>>
UNIX网络编程卷1:套接字联网-第7章:套接字选项
查看>>
UNIX网络编程卷1:套接字联网-第16章:非阻塞式I/O
查看>>
Linux源码解析-进程-进程
查看>>
Linux源码解析-进程-进程状态
查看>>
Linux源码解析-内核栈与thread_info结构详解
查看>>
Linux源码解析-内存描述符(mm_struct)
查看>>
进程的存储空间布局
查看>>
c函数调用过程原理及函数栈帧分析
查看>>