当前位置:   article > 正文

Git reset 撤销本地/远程提交版本_reset 提交版本号不包括

reset 提交版本号不包括

在合作的过程中,难免会遇到需要回滚的时候,分为本地和远程回滚。

某天,程序员 小A 喝了很多很多很多的酒,然后开始写代码 。

A开始改代码中一个文件,改了半个小时,运行之后,发现已经不知道自己在写什么,想 把这个文件恢复到该之前的样子

git checkout xxx.file   //恢复单个文件
  • 1

A恢复了之后,思路变的清晰了不少,下笔如神,重新改好, commit 了工作区的变动,这时A发现: 我的天,我都改了什么?这代码可太 low 了。我可不能提交我丑陋的代码!,他做了撤销

git reset --soft HEAD^ //撤销 缓存区
  • 1

然后又接着修改了代码,终于再三思量,提交了三次 commit 。

A 提交了三次代码,已经是凌晨2点,A去线上 pull 之后跑了一遍项目,瞬间头脑清醒,发现由于环境不一致,导致了 bug ,思考之后,发现暂时无法解决,只好回滚,小A首先将自己本地代码仓库回滚到,上一次 的版本,可以通过 reset 来回滚。

首先需要知道之前提交的版本号,小A通过 git log 查看提交版本

commit 25de78c066faccf5732dc86c62ebd9e85a7d6015
Author: XXX <xxxx@xx.com>
Date:   Wed Sep 6 15:39:58 2017 +0800

最新一次提交

commit 85c16a9c048a035c4796f373b8816c0b2f017d18
Author: XXX <xxxx@xx.com>
Date:   Wed Sep 6 13:33:56 2017 +0800

上一次提交


commit 9425c47b6cb54cdb06127749488bc48243832ad7
Author: XXX <xxxx@xx.com>
Date:   Wed Sep 6 13:33:56 2017 +0800

倒数第三次提交
...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
git reset --hard HEAD^ //撤销工作区到上一个版本
  • 1

小A又觉得或许应该将代码回滚到 上两次 的版本

git reset --hard 9425c47b6 //版本号可以省略写

git reset --hard HEAD~2
  • 1
  • 2
  • 3

小A 一看,居然将本地版本回滚到了倒数三次的版本,他生气给了自己一巴掌。然后

git reset --hard  85c16a9c
  • 1

终于将版本恢复到了倒数第二次提交,可气的是,小A太过激动,把水杯打翻了,电脑 cila 就关机了,小A 颤抖着双手,终于把电脑重新开启,他只想知道自己刚刚reset 了没有,于是小A

git reflog
25de78c HEAD@{0}: reset: moving to 85c16a9c
  • 1
  • 2

看到了,最近的操作记录,已经会滚到了倒数第二次提交,这时候,A将他本地的代码, 回滚到了他想到的版本,但是远程仓库还是停留在最新版本,他 叹了口气,-f 推上去,这样远程的版本就被撤销了。

git push -f 
  • 1

注:有些 git server 不允许这样做,比如gitlab ,但是可以通过管理员开启。

这样,A 就将本地和远程master 都恢复到了上两次提交的版本。小A迷迷糊糊的把 QQ 签名改成 “喝酒不写码,写码不喝酒” ,然后便一头栽进枕头,呼呼入睡。


推荐一篇详细的介绍文章 :git reset /revert的使用方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/794666
推荐阅读
相关标签
  

闽ICP备14008679号