博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[原]git的使用(四)---撤销修改
阅读量:5068 次
发布时间:2019-06-12

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

8.撤销修改

$ cat readme.txtGit 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.                    #把在工作区readme.txt文件中增加了一行

查看工作区readme.txt文档状态和修改内容是否正确

$ git status                                              #查看文件状态On branch masterChanges not staged for commit:  (use "git add 
..." to update what will be committed) (use "git checkout --
..." to discard changes in working directory) modified: readme.txtno changes added to commit (use "git add" and/or "git commit -a") $ git diff readme.txt #查看文件内容是否是自己需要的 diff --git a/readme.txt b/readme.txt index d5e8dad..921e20a 100644 --- a/readme.txt +++ b/readme.txt @@ -1,4 +1,5 @@  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. +Git tracks changes of files. +My stupid boss still prefers SVN. #发现这一内容是不能提交的(对boss不满,boss会记住的,你懂的

怎么才能撤销刚才对readme的修改呢?(这个问题还有个答案就是:直接更改文件内容就行,比较添加了什么,就删除什么。)

或者万一已经将第一次修改的文件提交到了中转站(暂存区),然后又第二次修改了文件,怎么办呢?

看!有提示(use "git checkout -- <file>..." to discard changes in working directory)。注意!!!

其中--” 很重要,不能遗漏。

-----------------------------------------------------------------------------------------------------

 

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

 

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

 

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

 

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

------------------------------------------------------------------------------------------------------

 

[实践出真知]

 

$ cat readme.txtGit 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.                    #这是刚才添加的一行  未提交到暂存区(中转站)

 

(由于未add到暂存区)删除这一行有两种方式:手动vim删除,还有一种就是下面这种使用 git checkout -- <file>

$ git checkout -- readme.txt              #撤销更改,即撤销添加的My stupid boss still prefers SVN. 这一行$ 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.

再来实践,如果第一次修改后已经提交,再次修改文本文件,需要撤销第二次的修改:

$ cat readme.txtGit 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 status On branch master Changes not staged for commit:   (use "git add 
..." to update what will be committed)   (use "git checkout --
..." to discard changes in working directory)         modified:   readme.txt #查询进行第一次修改 no changes added to commit (use "git add" and/or "git commit -a") $ git add readme.txt #

解决了工作区中的撤销修改,再来看看图中暂存区的撤销修改:

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

[ 实践出真知]

$ git status                                        #查看当前状态On branch masterChanges to be committed:  (use "git reset HEAD 
..." to unstage) #提示:如果要将暂存区的文本版本回退到工作区,使用git reset HEAD
modified: readme.txt #第一次修改文本并add到暂存区

由于第一次修改并add到了暂存区,现在需要回退到工作区:

$ git reset HEAD readme.txt                         #将暂存区的文本版本回退到工作区  即回退到add之前的状态,add之前的状态是进行的第一次修改Unstaged changes after reset:M       readme.txt$ git status                                         #查看文本版本状态已经恢复到了工作区中,停留在第一次修改的位置On branch master Changes not staged for commit:  (use "git add 
..." to update what will be committed) (use "git checkout --
..." to discard changes in working directory) modified: readme.txt $ git diff #验证是不是停留在了第一次修改的位置。第一次修改添加了一行信息:My stupid boss still prefers SVN. diff --git a/readme.txt b/readme.txt index d5e8dad..a60e297 100644 --- a/readme.txt +++ b/readme.txt @@ -2,3 +2,4 @@ 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. +My stupid boss still prefers SVN

撤销第一次的修改应该用哪个方法呢???如果还不清楚,就再从头看一遍此文章。

下面是答案:

$ git checkout -- readme.txt             #撤销第一次的修改$ git status                             #文本文件的版本已经恢复到最开始的版本,工作区干净,暂存区也是干净的On branch masternothing to commit, working directory clean $ 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.

 参考git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

转载于:https://www.cnblogs.com/horizonli/p/5325350.html

你可能感兴趣的文章
面试题
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
数据库框架的log4j日志配置
查看>>
lintcode-easy-Remove Element
查看>>
mysql重置密码
查看>>
jQuery轮 播的封装
查看>>
一天一道算法题--5.30---递归
查看>>
switchcase的用法
查看>>
React.js 小书 Lesson15 - 实战分析:评论功能(二)
查看>>
Java基础03 构造器与方法重载
查看>>
kafka的使用
查看>>
Linux0.11内核--加载可执行二进制文件之1.copy_strings
查看>>
编写Nginx启停服务脚本
查看>>
这些老外的开源技术养活了很多国产软件
查看>>
看图软件推荐
查看>>
【IdentityServer4文档】- 欢迎来到 IdentityServer4
查看>>
安全测试的一些漏洞和测试方法
查看>>
spring框架学习笔记(八)
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>