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

git:切换到指定的commit

背景

今天合并人家代码的时候,报冲突了,然后解决完冲突以后,发现有个冲突干错了,但是都已经commit了,所以我就想那就回到这次merge之前的我的分支的commit

解决过程

取消合并

我先查了能否直接取消合并,看到这样一条命令:

git merge --abort

执行后没有成功,看信息好像是认为我并没有进行merge操作,我猜测它可能只能撤销成功的merge,对于有冲突并解决过冲突的,它就不再认为是merge了,毕竟解决冲突之后还有一次commit操作,但这个只是猜测,还有待验证。

git revert

但是我今天没空去验证了,代码要立刻上线,我火急火燎又去查怎样切到指定的commit,先看到的就是git revert commit-id命令,大意是说它可以回到指定的commit版本,且保留这个commit版本之后干过啥的痕迹,我试了一下,然后出现个vim编辑页面(我用的git bash),说是提供revert的信息,我就直接wq退出了,通过git log确实可以看到过去发生了什么,包括最新的revert,但是当我重新git merge的时候,显示已经是最新的了,git log上head指向的还是最新的revert的那次commit-id,无奈又失败了。这个原因目前也是没想通,也没空去搞清原理了。

git reset --hard

然后又看到git reset --hard commit-id命令,也不管了–hard还是–soft了,直接hard梭哈,还好,终于试出了一个对的,通过git log,看到之前的合并的commit和revert都没了。我直接重新合并。

总结

现在想想,其实只是一行代码合并出问题了,直接把那行代码写对了再commit一次得了,用不着像上文这么麻烦,但是也还算学了点东西,虽然不多,虽然原理也都没咋看。但是我之所以非要重新合并是因为那地方涉及到我不熟悉的liquibase技术中的一个changeSet,我不知道重新合并解决冲突和直接写对有没有区别,所以选了一个我看起来感觉比较保险的方法,事后大佬告诉我,是一样的,执行过的changeSet不能改,但如果改了的话,直接改回来就行了,不一定要回滚。
说起Liquibase又是一堆问题,这个技术我也没正儿八经的看过,对于它需要注意的地方不是很了解,之后得去看看。
最后,感觉还是得用回谷歌,其他搜索引擎我得搜好几篇博客,比较着搞,有点浪费时间。

参考

参考

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

相关文章:

  • js之事件监听以及相关案例
  • pip 安装出现 ERROR: Command errored out with exit status 1: 问题解决
  • 图的遍历介绍
  • 实验二、网络属性设置《计算机网络》
  • 【Python数据魔术】:揭秘类型奥秘,赋能代码创造
  • Android Glide loading Bitmap from RESOURCE_DISK_CACHE slow,cost time≈2 seconds+
  • 微调技术:人工智能领域的神奇钥匙
  • MyBatis 参数上的处理的细节内容
  • 水帘降温水温
  • kafka如何保证消息不丢失
  • 流媒体学习之路(WebRTC)——音频NackTracker优化思路(8)
  • Java基础面试重点-2
  • 【活动文章】通用大模型VS垂直大模型,你更青睐哪一方
  • 记录一个Qt调用插件的问题
  • 9.1 Go 接口的定义
  • 易于上手的requests
  • 【QT Creator软件】解决中文乱码问题
  • 边缘网关在智能制造工厂中的创新应用及效果-天拓四方
  • Django-filter
  • 文字悬停效果
  • [SWPUCTF 2022 新生赛]ez_1zpop(php反序列化之pop链构造)
  • 2-1基于matlab的拉普拉斯金字塔图像融合算法
  • Android基础-进程间通信
  • 【微信小程序】uni-app 配置网络请求
  • SpringCash
  • 小红书的文案是怎么写的?有啥套路么!
  • 开放平台接口安全验证
  • 【AI原理解析】— GPT-4o模型
  • Qt中图表图形绘制类介绍
  • nginx rewrite地址重写