【经验】项目开发中的Git解决冲突操作

置顶补充:
本文原先是word文档采用批注,现md改用括号进行补充
Git Version 2.39源码编译
Git版本过旧不支持switch restore等系列指令
请自行编译源码更新
tig是辅助工具,请自行安装(用git log可以实现相同效果)
操作经过项目实践,有误请指出~
推荐 cherry-pick 操作, rebase 使用较少如有纰漏请谅解~
个人开发分支图与文有差异,认准一个即可~


注意:本文档采用批注进行补充

总体概述:简单介绍了新人在项目开发中,使用Git操作解决冲突的两种常规处理

基础部分

线上分支(基本不会接触到)、开发分支(trunk为例)、个人开发分支(xfz_xxx_20230308为例)

三者关系:开发分支领先线上分支,个人开发分支领先开发分支

弄清楚两个概念:本地分支、远程分支
(注意区分未涉及push操作的一律是针对本地分支的操作)

本文本在每次分支改动时都会提示(不提示默认为上一次所处的分支)

实际操作

首先,从远程克隆(这个操作会自动产生一个同名的本地分支)最新的主干开发分支
git clone -b trunk xxx.git

(此时位于trunk分支)

然后,根据功能需求进行代码改动(不要提交和推送!!)

等到功能完成(可能一个功能、可能多个功能、可能部分完成)之后,有如下两种方案可以使用:

方案一:使用cherry-pick

  1. 创建一个临时本地分支并进行切换 git switch -c tmp

(此时位于tmp分支)

  1. 将完成功能部分提交(记为A),git add xxx && git commit -m xxx
    这个操作根据你完成功能的个数x重复执行x次,不同功能的代码改动要进行不同的提交
  2. 将剩余未完成的代码改动统一提交(记为B),git add . && git commit -m xxx

  1. 切回trunk分支并且同步拉取最新的远程分支:git pull

(此时位于trunk分支)

  1. 使用tig tmp查看tmp分支的提交记录,记下刚刚几次提交的commit id
  2. 使用 cherry-pick -n commit id对当前分支打补丁(逐个commit id使用,完成功能的提交先用,这里以A的提交为例)并解决冲突

  1. 切到一个新的个人开发分支xfz_xxx_20230308并推送到与对应的远程分支

git switch -c xfz_xxx_20230308

git add .

git commit -m xxx

git push origin -u xfz_xxx_20230308

(当前位于xfz_xxx_20230308分支)

  1. gitlab上提交 xfz_xxx_20230308 分支合并到主干分支trunk的请求

(记得勾选删除源远程分支)

  1. 合并完成后切回主干分支 git switch trunk,使用 git pull 拉取最新的变动

(当前位于trunk分支)

  1. 使用 git cherry-pick -n commit id 将剩余的代码改动重新复原(这里以B提交为例),恢复原先的工作进度

  1. 删除本地的临时分支和个人开发分支 git branch -D tmp xfz_xxx_20230308

如果临时需要拉取到最新的代码,则进行如上的1-6步操作即可

方案二:使用rebase

  1. 切换到一个新的个人开发分支 git switch -c xfz_xxx_20230308

(当前位于xfz_xxx_20230308分支)

  1. 针对需要提交的功能,分别进行多次提交,并推送到远程个人开发分支

  1. 对当前分支进行变基操作 git rebase origin/trunk -i

  1. 变基解决冲突后,会将之前的个人开发分支提交重新生成并提交,推送到个人开发分支

  1. gitlab上提交 xfz_xxx_20230308 分支合并到主干分支trunk的请求

(记得勾选删除源分支)

  1. 切回开发分支trunk ,并拉取最新的代码

(当前位于trunk分支)

  1. 删除本地个人开发分支 git branch -D xfz_xxx_20230308

其他

git stashgit reset指令的使用

#我的实习求职记录#
全部评论
用变基的时候 不急着推上远程 等变基完再推 同时基底分支(trunk)也要拉到最新
点赞 回复 分享
发布于 2023-03-25 19:20 广东

相关推荐

03-12 11:02
四川大学 会计
在美团正式工作的8个月,我经历了从学生到职场人的转变,这段时间有挑战和压力,也有成就感和幸福(忙里偷闲,偷感很重)。刚入职时,我对工作流程和任务要求不太熟悉,老板只说个大概,全部要我自己去梳理流程、完成工作啊啊啊啊啊。这几个月常常需要加班来完成,总之就是一整个熬夜加班。再说一遍,干财务要谨慎。虽然压力很大,但我相信每一次挑战都是成长的机会,哪有啥办法呢,谁不是强迫自己熬着呢😭 #工作压力大怎么缓解# 为了更好地适应这里,我主动与主管和hr沟通,分享自己的困惑和压力。主管和hr给我提供了很多建议和指导。也帮助我理清了工作思路,提高了一些工作效率吧,越来越清晰自己想要啥、不想要啥了。同时,我也尝试通过一些方法来排解压力,比如制定详细的工作计划todo,合理安排时间,确保工作和休息的balance。在同事的建议下,我还参加了一些健身活动,比如周末打球、爬香山,还有利用午休时间去健身房锻炼,释放压力,保持良好的身心状态,毕竟什么都不做的话,被摧残的身心也没办法恢复呀~刚从象牙塔步入职场,经历的心智转变简直是大冒险。从校园的轻松愉快到职场的高强度工作,我逐渐适应了这种变化。学会了时间管理、有效沟通和团队合作,感觉自己真的成长了不少。工作中难免遇到累和痛苦的时刻,特别是在面对紧迫的项目和繁重的任务时。但这些经历让我变得更加坚韧和成熟。学会了在压力下保持冷静,合理分配任务,并在繁忙中找到平衡点,保持身心健康。每次克服困难,都会觉得自己又升级了。在这段时间里,我学会了更有效地管理时间,提高了专业技能,逐渐适应了快节奏的工作环境。通过与团队的合作,学会了如何更好地与同事沟通和配合。每一次任务的完成都让我感受到成就感,也让我更加自信(这个是真的,越痛苦越有起伏感)。希望未来的工作中继续积累经验,不断成长。 #工作压力大怎么缓解# #美团求职进展汇总##实习想申请秋招offer,能不能argue薪资##实习/项目/竞赛奖项,哪个对找工作更重要?#
点赞 评论 收藏
分享
03-24 14:50
学而思_HR
好未来前端实习一面面经1.自我介绍2.看代码说结果,变量提升相关3.浮点数精度问题,通过过先转换为整数如果两个浮点数的长度不相等怎么解决?4.forEach、map、for循环之间的区别是什么?5.看代码说结果,事件循环相关6.场景题:在做tab的切换,一个是已读tab(展示已读列表)一个是未读的tab(展示未读列表),每次点击一个tab的时候都要去发送请求去获取信息,当快速切换按钮的时候会发发生什么问题?7.你之前是做B端这些的吧?主要是做哪些?相对来说你认为做的比较复杂的功能?8.做过哪些性能优化?反问整体下来感觉问的八股还是比较少的吧,大多数都是面试官写代码然后让我说结果,然后再解释为什么这样说,还有就是场景题和项目了。面试官人很好就算一些答不出来还是会去引导回答出来。作者:芝士小堡链接:https://www.nowcoder.com/feed/main/detail/b9a71d03667146ddb552852ad308752d?sourceSSR=users内推码:DSXPprHa内推有26个不同岗位,待遇都比较好,感兴趣的可以使用内推码投递,欢迎随时咨询进度!大家可以在评论区留下姓名缩写及投递岗位,我来查下后台有没有内推成功!内推链接https://app.mokahr.com/m/campus_apply/tal/148080?recommendCode=DSXPprHa&hash=%23%2Fjobs内推码:DSXPprHa#数据库##实习##前端##好未来##面试##内推##学而思内推##好未来面经#
学而思
|
校招
|
26个岗位
点赞 评论 收藏
分享
评论
3
14
分享

创作者周榜

更多
牛客网
牛客企业服务