博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IDEA Git版本回滚提交方式
阅读量:7071 次
发布时间:2019-06-28

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

hot3.png

以此文记录下在IDEA中如何回滚项目历史版本,并提交远程

62da17f1d74ee29502acb1301cf38f13c4c.jpg

大致分为两步:

第一步,回滚本地代码;

第二步,回滚远程代码;

 

首先,我们先来回滚本地代码

按照下图的步骤,获取你要回滚的历史版本的版本号

a3cfaf55eb11a2246c5f4e13123efd11345.jpg

然后项目根目录右键 Git->Repository->Reset HEAD 

b29b2031bc4ffe873b27b74b191e759f244.jpg

bfa87378807e2f5a3e1acac32766c29194e.jpg

Reset Type 有三种:

mixed 默认方式,只保留源码,回退commit和index信息

soft 回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit
hard 彻底回退,本地源码也会变成上一个版本内容

此时我们选择Hard彻底回退,点击Reset就能将本地代码版本回滚到指定版本。

 

然后我们开始将回滚的本地代码提交到远程仓库,此时有两种方式:

第一种,直接强制提交,使用git命令提交 git push -f,但是这样会把回滚版本之后的提交记录全部删除,因此不建议这样做。

第二种,用前面我们回滚本地的方式,再次回滚到最新版本。

首先,我们获取到远程分支最新版本的版本号

53099834ba5e6d263331f972ce25b86138d.jpg

然后,我们再次Git->Repository->Reset HEAD 这次与之前有些不一样,我们Reset Type采用Mixed方式将源码保留,然后点击Reset。

bf97f0575517c1ac6cac4c6d95963d6c9d2.jpg

最后我们发现代码已经是旧版本的代码,并且版本还是最新版本,此时正常提交push后我们的本地和远程代码的回滚就完成了。

 

参考:

 

上面的操作基于IDEA工具来进行操作,其底层原理为利用git的tag标签回滚

git tag操作参考:

我们只在此证明利用Git tag回滚操作与上面的IDEA操作的关系

首先,切换到IDEA的Terminal命令行(也可以是dos命令行,Git Bash命令行),执行下面的命令

ce4da75e62437cc48d2a443c982fefa238b.jpg

b8c8859d97d82fbfe4c16671e43f1dcbbb8.jpg

注意tag详细信息里面的commit id

我们在看看git的历史提交记录中上面tag提交的那次记录的Revision Number

d95685c6cbb02a94a66202f1d211e42871b.jpg

Revision Number为 b8e7431ac80cc37d315362b7d2968d4940583820,不同人的编号会不一样,但是commit id 与 Revision Number一定是一样的

那么我们之前IDEA操作的也都是通过这种原理来实现的。

转载于:https://my.oschina.net/u/3687664/blog/3010042

你可能感兴趣的文章
SQL SERVER得到一个月所有的日期
查看>>
子网线划分+综合布线
查看>>
rsync远程同步
查看>>
袋鼠云数据中台专栏(一) :浅析数据中台策略与建设实践
查看>>
Confluence 6 文档主题合并问答
查看>>
史上最透彻的 RabbitMQ 可靠消息传输实战
查看>>
JDK源码分析(10)之 Hashtable 相关
查看>>
重做项目的初衷及计划
查看>>
@PathVariable 带"."号传参的小坑
查看>>
写一个方法,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。...
查看>>
Python打牢基础,从12个语法开始!
查看>>
为什么不支持MD
查看>>
如何成为月薪3万左右的UI设计师,应该学习什么能力?
查看>>
mysql 修改datadir
查看>>
两台web服务器做文件共享,负载均衡
查看>>
eclipse maven 导出项目依赖的jar包
查看>>
线程池模型
查看>>
使用spring boot构建微服务
查看>>
域用户管理
查看>>
SCVMM2012SP1之环境准备
查看>>