当前位置: 首页 > news >正文

【Git】代码误推送还原(真实项目环境,非纸上谈兵)

背景

RT, 我今天眼睛花了,不小心把工作分支【合并】到了一个不相干的功能分支上,并且代码已经推送到远程仓库了。于是,只能尝试还原到上一次提交中。
【合并】分支有一个点我们是不可避免的,文字很难描述,我画图给大家看看吧,如下所示:

在这里插入图片描述
大家应该知道会有这个现象吧,看图应该能了解清楚。
而且,由于在开发过程中,多个同事有各自的分支,所以在合并之会有及其错综复杂的分支线,看着都头疼。

解决思路

但是问题还得解决。首先大家知道如果你要还原的话,需要用到哪些命令吗?
我相信大家都百度过,通常你会得到下面这两个命令:

  1. 重置当前项目代码到某个版本:git reset --hard [版本id]
  2. 强制提交上一个版本:git push origin [branch] --force

没有经验的朋友估计会有点懵,版本id是什么,如何确定?

版本id是什么

对于这个问题我相信大部分人能理解。就是我们每提交一次代码到仓库,为了区分本次提交记录与上一次的区别,肯定需要一个版本号标记的,这个就是版本号。如果你是idea用户,可以看下面这个图,得到当前提交内容的【不完全版本号】:
在这里插入图片描述
如下图,则表示,本次我的同事提交的【修改日期格式参数】的【不完全版本号】为:9c948858(虽然是不完全版本号,但是已经可以用了。版本号前缀有冲突的概率不是很大)
当然,我们还可以获取完整版本号,更简单了。直接对准当前提交记录,右键选择-》Copy Revision Number,也能拿到
在这里插入图片描述

如何确定

如何确定这个就是你要回滚的版本,那就是你自己的事情了。但是正如在前面我说的那样,由于多分枝开发势必造成错综复杂的提交记录,所以,最难的有时候反而是寻找这个回滚点的过程。
这里我说一下我是怎么找的,很简单也很取巧。我发现自己推送错误之后叫我同事别更新代码先,让他先把他本地仓库里面的版本号发我,哈哈哈。

执行

既然我已经得到版本号了,我就可以开始执行命令了。
如下:
先执行:git reset --hard 8a837758e2316f260957d658326e82e16c14862c
接着执行:git push origin yzmyd_branch_0824 --force
后面这个--force是强制推送的意思,没有这个会提示你版本冲突

http://www.lryc.cn/news/137209.html

相关文章:

  • CPU 飙升?这3大场景助你精准定位
  • 6、Spring_Junit与JdbcTemplate整合
  • Redis是如何保证高可用的?
  • 精益求精:通付盾安卓应用加固升级,为移动安全保驾护航!
  • javaweb01-html、css基础
  • 牛客复盘] 2023河南萌新联赛第(七)场:信息工程大学 B\I 20230823
  • 使用PyMuPDF添加PDF水印
  • window如何实时刷新日志文件
  • 动态代理的两个使用方式(手动实现+SpringAOP实现)-Demo
  • 面试话术(MQ+mybatis+nginx+redis+ssm+mysql+linux)
  • JSON的理解
  • 面试热题(二叉树的最大路径)
  • C#设计模式之--六大原则 开闭原则
  • 编写Dockerfile制作自己的镜像并推送到私有仓库
  • 华为OD-分积木/分苹果
  • Mysql的引擎有哪些?支持事物么?DB储存引擎有哪些?
  • 【懒加载】js实现懒加载、vue实现图片懒加载指令
  • 微信小程序教学系列(7)
  • Android 9.0 kenel和frameworks中修改ram运行内存的功能实现
  • PHP实践:获取网络上图片的长宽以及图片类型
  • 使用 DPO 微调 Llama 2
  • 数据库——事务,事务隔离级别
  • 对《VB.NET通过VB6 ActiveX DLL调用PowerBasic及FreeBasic动态库》的改进
  • 【PHP】数据类型运算符位运算
  • 使用 Nacos 作为 Spring Boot 配置中心
  • 微服务 Eureka
  • Spring Boot 事务和事务传播机制
  • 计算机组成原理(巨巨巨基础篇)
  • C语言:选择+编程(每日一练Day7)
  • leetcode做题笔记93. 复原 IP 地址