工作的时候遇到的git版本冲突与合并问题

问题的本质在于对Git对象模型 与引用系统的理解深度。遇到git问题的时候,不要慌张,什么问题都是可以解决的,只是还没用习惯,然后下面是git的几个区域以及代码在之间的流动过程示意图。

接下里就分享一下我在工作中遇到的实际的git问题以及解决方案:

1、release分支合错子分支了,还没push到远程仓库,怎么办?

描述:比如要发版合代码了,本来是要A分支合到release分支上了,结果把B分支合上面了

操作:git merge

分析:当我们merge之后,A分支的代码已经全部到了release分支的本地仓库中,只要还没push就问题不大,因为还只是在你自己的电脑上
解决方案 :直接删掉本地(Local)的release分支

然后fetch远程(remote)仓库(不是必要操作)

再check out release分支

就把远程仓库还没有污染的代码拉到了本地,本地已经污染的就直接被删除了,然后再正常把B分支的代码合过来,再push即可

2、release分支合错子分支了,已经push到远程仓库,怎么办?

描述:比如要发版合代码了,本来是要A分支合到release分支上了,结果把B分支合上面了,而且已经推送到远程仓库上去了

操作:git merge + git push

分析:当push之后,错的代码已经全都进远程仓库了,如果此时别人来拉的话就会把污染的代码全拉走,但是也不要慌,有解决方法
解决方案 :首先找到合B分支之前的那条记录,然后reset

选择Hard模式

然后再git push -f 强制推送,即可把release分支恢复到干净的版本了

3、在错误的分支上提交了代码

描述:比如需要在A分支上改一个bug,但是改到B分支了,并且暂存或者提交了

操作:git commit / git push

分析:这边推荐使用cherry pick实现不同分支之间的改动平移
解决方案 :切换到A分支,然后在git log中找到B分支暂存/提交的那条(多条)记录,然后直接cherry pick

在A分支直接push即可,然后回到B分支进行revert、push即可完成

先暂时记录到这,后面遇到类似的问题依旧持续更新

相关推荐
誰能久伴不乏8 小时前
看懂 Git 团队协作全流程:分支、提交、PR、rebase 到底在干嘛
git
sunshine22 girl14 小时前
git tag-项目流程
git
imDwAaY1 天前
6篇文章讲清楚Git:Git 远程协作:fetch、pull、push 到底有什么区别?(3/6)
git·后端
imDwAaY1 天前
6篇文章讲清楚Git:Git 撤销与恢复:reset、revert、restore 应该怎么选?(4/6)
git
用户73309646123091 天前
再也不怕手滑丢代码!给 git 高危操作加一层安全校验
git
广白1 天前
Git Tag 实战:从出包追溯到版本发布
前端·git·面试
Winlifes7 天前
我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作
git
郑州光合科技余经理7 天前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
我命由我123457 天前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
Lcr3s8 天前
Git基础之(0):如何在Ubuntu(Linux)上安装git
git