解决代码冲突小记
前情摘要
最近在编写工作用偷懒小代码,仓库项目存在两个分支, dev
与 master
分支,由于无聊且想要熟悉下Git的使用技巧,因此对 master
分支设置了分支保护,至此,本篇水文出现。
详细描述……
分支保护的愁与泪
由于开启了分支保护,所以通过使用Git命令无法直接push到 master
分支,因此,所有的更改都需要通过先推送到 dev
分支,由 dev
分支发起PR请求后才能将代码合并到 master
分支,但是常规PR解决都是最终要推送master分支上的,(可能是我孤陋寡闻,或者Gitee是这么推荐的。。。),由于分支保护,因此此条路径不通,遂问DeepSeek。
DeepSeek问询语
1 | 现在存在问题:dev分支代码是最新的,master分支代码是老代码,现在dev分支代码PR推送master分支存在冲突,并且master分支有分支保护(不能通过直接push推送到该分支,只能通过PR进行合并),如何进行解决如何进行更新解决该冲突。 |
解决方法
- 拉取最新代码到本地
1
2
3
4
5# 切换到master分支并拉取最新代码
git checkout master
git pull origin master
# 切换回dev分支
git checkout dev - 将master合并到dev分支(解决冲突的核心步骤) 此时会出现冲突提示(类似
1
2# 在dev分支合并master的更新
git merge masterCONFLICT (content): Merge conflict in <文件名>
) - 解决冲突
选择保留需要的代码(或合并两者),删除<<<<<<</=======/>>>>>>>
标记
对每个冲突文件重复此操作 - 提交合并结果并推送远端分支 这会自动更新已有的PR(PR会实时跟踪dev分支的新提交)
1
2
3
4
5# 标记冲突已解决
git add <解决后的文件> # 或 git add . 添加所有
# 提交合并结果(不要修改默认信息)
git commit -m "Merge master into dev to resolve PR conflicts"
git push origin dev - 完成PR合并请求
之后便可在平台上对已有PR进行后续操作
尾言
继续问询
由于Gitee的教学是本地解决master分支代码冲突问题,因此又好奇问了一下DS,DS讲述如下:
特性 | 你提到的命令序列 | 推荐的解决方案 |
---|---|---|
目标 | 直接修改master分支 | 通过PR合规更新 |
操作位置 | 在master分支操作 | 在dev分支操作 |
合规性 | ❌ 违反分支保护策略 | ✅ 符合分支保护策略 |
冲突解决 | 在本地master解决 | 在dev分支解决 |
推送目标 | 直接推master | 推dev分支更新PR |
团队协作 | 破坏协作流程 | 保持完整PR流程 |
审计历史 | 绕过代码审查 | 保留PR审查记录 |
Gitee …… 6
参考资料
鸣谢DeepSeek