代码被玩坏了?想撤销吗?看看就知道了
虽然自觉是一个Git工具的老手了,但是平时犯了一点错误,就发现有点捉襟见肘了。就好像今天我把一些代码玩坏了,想撤回到前几个版本去(此时已经push到远程分支),但是仔细一想:卧槽,这操作我好像不太熟练啊,于是乎就有了这篇文章了。
一、git push撤销
1.1 使用场景
代码已经修改并push到远程分支,想撤回到前几个版本,并且会删除本地代码所做的修改!
1.2 示例场景
如下图。
1.3 示例目标
撤销第二、第三次提交代码,回到第一次提交代码
1.4 详细步骤
1.4.1 获取第一次提交commit版本号
在idea的Terminal窗口输入git log查看提交日志,结果如图:
将目标commit版本号复制保存留用。
如果git log无法正常显示中文,在Terminal中使用如下命令:
set LESSCHARSET=utf-8
1.4.2 将本地代码撤销至目标commit版本(高危操作,请明确利害关系)
执行命令:
git reset --hard 57f89f403fd8b373a44cf5ae8481402a74799bee
结果:
HEAD is now at 57f89f4 'Git演示:第一次提交'
验证结果:
本地分支log
远程分支log
此时,本地分支第二、第三次提交已经撤销删除了!
1.4.3 覆盖远程分支代码(高危操作,请明确利害关系)
请明确本地分支代码是最终的代码!否则谨慎操作!执行命令:
git push --force
执行完这一步,git push撤销操作就完成了,git log如图:
二、git commit撤销
2.1 使用场景
代码已经git add,并且git commit,但是还没有git push
2.2 命令使用
git reset --soft HEAD~1
## 如果进行了2次commit,想都撤回,可以使用:
git reset --soft HEAD~2
## ... 以此类推
三、git add撤销
3.1 使用场景
代码已经执行了git add操作,想撤销git add操作。
3.2 命令使用
## 全部撤销
git reset HEAD
## 指定文件撤销 git reset HEAD <file>,文件名可通过git status命令获取。
git reset HEAD src/main/java/wang/leisure/gitpractice/FirstClass.java
四、修改git提交信息
4.1 使用场景
不修改代码内容,只修改commit信息,在git commit操作之后,git push操作之前。如果你在git push之后操作,也会将本地commit信息变更,但是这样会导致与远程分支信息不一致,所以尽量不要在git push之后操作。
4.2 命令使用
直接在Terminal中输入:
git commit --amend
命令输入之后,就是Vim类似的修改、保存操作了。
五、恢复文件到上一次提交时的样子
5.1 使用场景
文件做了很多修改,但是还没有git add,又不想一步步回退。
5.2 命令使用
## 文件名可通过git status命令获取
git checkout -- src/main/java/wang/leisure/gitpractice/FirstClass.java
至此,有关git操作撤销相关的内容就分享结束了,有任何不懂的可以留言哦。深夜1:15了,如果文章对你有帮助希望关注支持一下。
本文分享自微信公众号 - Java开发乐园(it-oak)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一文讲透 “进程、线程、协程”
本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什么? 为什么说Python中的多线程是伪多线程? 不同的应用场景该如何选择技术方案? ... 什么是进程 进程-操作系统提供的抽象概念,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。程序本身是没有生命周期的,它只是存在磁盘上的一些指令,程序一旦运行就是进程。 当程序需要运行时,操作系统将代码和所有静态数据记载到内存和进程的地址空间(每个进程都拥有唯一的地址空间,见下图所示)中,通过创建和初始化栈(局部变量,函数参数和返回地址)、分配堆内存以及与IO相关的任务,当前期准备工作完成,启动程序,OS将CPU的控制权转移到新创建的进程,进程开始运行。 操作系统对进程的控制和管理通过PCB(Processing Control Block),PCB通常是系统内存占用区中的一个连续存区,它存放着操作系统用于描述进程情况及控制进程运行所需的全部信息(进程标识号,进程状态,进程优先级,文件系统指针以及各个寄存器的内容等),进程的PCB是系统感...
- 下一篇
CNN中常用的四种卷积详解
卷积现在可能是深度学习中最重要的概念。正是靠着卷积和卷积神经网络,深度学习才超越了几乎其他所有的机器学习手段。这期我们一起学习下深度学习中常见的卷积有哪些? 1. 一般卷积 卷积在数学上用通俗的话来说就是输入矩阵与卷积核(卷积核也是矩阵)进行对应元素相乘并求和,所以一次卷积的结果的输出是一个数,最后对整个输入输入矩阵进行遍历,最终得到一个结果矩阵,说白了就是一个卷积核在图像上滑动,并求取对应元素相乘求和的过程,如下图: 卷积核为3*3,步长为2和填充的2D卷积 首先,一般情况下卷积层的作用都是用来自动提取图像的一些视觉特征,代替传统的手动方法提取特征不精确,不全面等缺点。常见的一般卷积操作都包括以下四个参数: 卷积核大小(Kernel Size):卷积核定义了卷积的大小范围,在网络中代表感受野的大小,二维卷积核最常见的就是 3*3 的卷积核,也可以根据网络设计5*5或者7*7,甚至1*1等不同size的卷积核,来提取不同尺度的特征。在卷积神经网络中,一般情况下,卷积核越大,感受野(receptive field)越大,看到的图片信息越多,所获得的全局特征越好。虽说如此,但是大的卷积核会...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案