详解IDEA Git Reset 选项说明

所属分类: 网络编程 / 相关技巧 阅读数: 1834
收藏 0 赞 0 分享

1 . 目标

演示下图的git reset 各选项的效果。

2. Git Reset操作说明

图中说明:

his will reset the current branch head to the selected commit, and update the working tree and the index accoding to the seleted mode.

意思是:
该操作会重置当前分支指针到所选择的提交点,并且更新记录点和根据所选选项更新index状态。

这句话意味着该项操作会影响两件事:提交的记录 和 当前工作区中的文件状态。

3. 环境说明

为了简化演示,本次使用master分支。master分支初始状态为下图所示:


本篇各个选项的效果演示均在“回退到版本1”这个需求下进行。


弹出选项框

4. 各选项效果说明

4.1 Soft

Soft选项:在选择的回退点之后的所有更改将会保留并被git追踪下来。这就意味着可以在 Version Control 的 Local Changes 面板中查看到它们。

创建新文件demo.txt 并index。使得demo.txt文件能够被git追踪版本。



此时我们是在版本2的工作区基础上进行创建的demo.txt,此时我们想要回退到版本1,并使用Soft模式回退。回退的结果如下:

4.2 Mixed

Mixed模式:在选择的回退点之后的所有更改将会保留但不会被git追踪下来。

创建新文件demo.txt 并index。使得demo.txt文件能够被git追踪版本。


此时我们是在版本2的工作区基础上进行创建的demo.txt,此时我们想要回退到版本1,并使用Mixed模式回退。效果如下:

4.3 Hard

Hard模式:在选择的回退点之后的所有更改都会被丢弃。(包括被追踪的和已提交的文件)

在版本2基础上新增文字,形成未提交的版本3.


回退到版本1,以Hard模式。

4.4 Keep

Keep模式:在选择的回退点之后的所有已提交的更改会被丢弃。但本地修改的会被完整地保存下来。

在版本2基础上新增文字,形成未提交的版本3.


选择了Keep模式进行回退到版本1的效果如下:


说明:上图出现了Git Reset Problem对话框是因为Keep模式会保留工作区修改的内容,所以在回退到指定的提交点后,Idea接下来要处理就是这些在工作区修改的内容,所以询问用户是否有必要保留这些内容。如果没必要保留,就完全可以Hard reset;如果有必要,通常情况下下一步就会需要解决冲突问题。

Hard Reset效果如 4.3 所示,点击Smart Reset后效果如下:


没错,这里的stash 和 unstash 都是自动完成的。

说明:用户也可以自己手动 stash 和 unstash操作,类似压栈和弹栈操作。这一机制在“暂时不想提交现已修改的,但现在必须马上在未修改之前的版本上着手开发另一套事情”的尴尬场景下,可以帮助我们有一个解决方法。这一概念像CPU被中断后如何保存中断现场,在处理完其他任务后,能够恢复当时现场。这里也是:当前开发版本被中断后如何保存当前未提交内容,在开发完成其他事情后,再恢复到这些内容。

5. 总结

Soft:在选定提交点之后所做的所有更改都将被暂存(这意味着可以到 Version Control 窗口(Alt+9)的Local Changes 选项卡,以便您可以查看它们,并在必要时稍后提交)。

Mixed:在所选提交之后所做的更改将被保留,但不会暂存以进行提交。

Hard:在所选提交之后所做的所有更改都将被丢弃(已暂存的和已提交的)。

Keep:在选定的提交之后所做的提交更改将被丢弃,但本地更改将保持不变。

如果需要使用IDEA 进行版本回退可以访问 IDEA git分支回退指定的历史版本

更多精彩内容其他人还在看

使用Python解决Windows文件名非用反斜杠问题(python 小技巧)

要想让你的 Python 代码同时在 Windows 和 Mac/Linux 上工作,你需要处理不同系统文件名用不同斜杠的问题。而 Python 3 有一个名为「pathlib」的新模块,可以帮你解决这个麻烦,需要的朋友可以参考下
收藏 0 赞 0 分享

VSCode 使用Settings Sync同步配置(最新版教程,非常简单)

这篇文章主要介绍了VSCode 使用Settings Sync同步配置(最新版教程,非常简单),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

重装win10系统超详细的图文教程(适用所有windows系统)

这篇文章主要介绍了重装win10系统超详细的图文教程(适用所有windows系统),非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

ReactJS中的自定义组件实例代码

React 是一个用于构建用户界面的 JAVASCRIPT 库。这篇文章主要介绍了ReactJS中的自定义组件的代码讲解,需要的朋友可以参考下
收藏 0 赞 0 分享

在命令行用 sort 进行排序的方法

这篇文章主要介绍了在命令行用 sort 进行排序的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

scala中停止循环的三种方式(推荐)

这篇文章主要介绍了scala中停止循环的三种方式,文中给大家提到了循环语句的流程图,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

深入讲解HTTPS中的加密算法

前段时间对接了好多外部接口,很多都是https的,还有证书,还有一些加密的。对这块不是太了解,就查资料整理总结实践下。下面这篇文章主要给大家深入的介绍了关于HTTPS中加密算法的相关资料,需要的朋友可以参考下。
收藏 0 赞 0 分享

HTTP协议简介_动力节点Java学院整理

这篇文章主要介绍了HTTP协议简介,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

HTTP协议入门_动力节点Java学院整理

这篇文章主要为大家详细介绍了HTTP协议入门的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

HTTP协议详解_动力节点Java学院整理

这篇文章主要介绍了HTTP协议详解,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器
收藏 0 赞 0 分享
查看更多