您当前的位置: 首页 >  git

Allen Su

暂无认证

  • 2浏览

    0关注

    431博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Git 教程系列第 15 篇】Git 中各种情况的撤销修改操作

Allen Su 发布时间:2019-08-24 23:52:56 ,浏览量:2

这是【Git 教程系列第 15 篇】,如果觉得有用的话,欢迎关注专栏。

上一篇博客讲到了 Git 中 如何查看版本改动 ,了解了如何检查不同情况下的修改操作后,本篇博客我们来讲述不同情况下的撤销操作。

撤销操作分为以下4种情况,针对这4种情况,接下来我按顺序逐个讲解。

文章目录
      • 情况一:已修改,未添加到暂存区
      • 情况二:已添加到暂存区,未提交到版本库
      • 情况三:已提交到版本库,未推送到远端库
      • 情况四:已推送到远端库

情况一:已修改,未添加到暂存区

首先,我在本地建了一个 TestFile.txt 的空文本,在第一行写入 “测试不同情况下的撤销操作” 的内容,然后推送到远端,当做我们的初始版本。

接着把内容改为“验证不同情况下的撤销操作”,注意此时文件已经是修改状态,只不过还没有添加到暂存区,即还是在工作区,此时如果想改回未修改前的状态,就需要使用指令

git checkout -- FileName

如下图所示 在这里插入图片描述 如果想要撤销修改的文件非常多怎么办呢?你可以通过下面这个指令一键把所有改动撤销

git checkout .

git add . 的反义词就是 git checkout . 在工作区做完修改之后, 如果想把所有的改动文件都添加到暂存区,就执行 git add . 指令, 如果想把添加到暂存区的文件撤销回工作区,就执行 git checkout .

情况二:已添加到暂存区,未提交到版本库

不巧的是,你已经将改动文件通过 git add 指令添加到了暂存区,此时才意识到了错误,但又想要撤销回工作区,怎么办呢? 你需要通过先后两个指令来完成,如下代码所示

git reset
git checkout --FileName

说明: git reset 指令只是把修改撤销回到 git add 之前的状态,即在工作区已经改动过文件的状态,也就是说文件本身还处于 已修改未添加到暂存区 的状态,如果想撤销到没改动文件前的状态,就回到了上面情况一的问题,所以还需要执行 git checkout – FileName 指令。

亲测代码如下图所示 在这里插入图片描述 此时我用 git diff 指令查看修改,可以看到修改内容,反证了此时我们处于工作区(如果此时处于暂存区,使用该指令是看不到任何输出结果的,前面博客已说过)

并且文件已被修改,此时使用 git checkout --FileName 指令撤销回未修改前的文件状态,再用 git diff 查看,没输出结果就证明文件没做任何修改了。 在这里插入图片描述

情况三:已提交到版本库,未推送到远端库

这次你把改动文件不仅添加(git add)到了暂存区,还提交(git commit)到了自己本地版本库,此时你才意识到错误已经发生,怎么挽回呢?不要慌,有办法

你可以通过下面指令来撤销你提交至版本库的修改

git reset --hard origin/master

前面说过,origin/master 代表远程仓库,既然自己的版本库已被污染,那就从远端仓库把文件拉取回来吧。

亲测代码如下所示 在这里插入图片描述

情况四:已推送到远端库

此时你已经使用 git push 指令把更改的文件推送到了远端仓库,此时你的本地版本库和远程仓库是一样的,如果想要恢复的话,只需要先恢复本地仓库,再强制 push 到远端库就好了。

后续补充: 当然,你也可以通过前面讲到的版本回退的指令 git reset --hard 指令回到未修改前的版本,不过这种方法比较暴力,如果只想撤销指定文件的话还是用 git checkout 比较合适。

至此,撤销修改操作介绍完毕,如博文有错误,希望大家积极指出,让我们共同进步,共同成长。

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。

结束语 技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。 最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
关注
打赏
1656491068
查看更多评论
立即登录/注册

微信扫码登录

0.0370s