文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Git的代码合入流程详解

2022-11-16 00:16

关注

总述

代码合入流程用于减轻代码合入复杂度、简化主分支历史(具有线性的历史)、保证合入代码对主分支的HEAD有效
代码合入分为两步

其中第一步“解决冲突”的方法分为两种种情况:

其中第二步“执行合入”应采用 merge no-fast-forward 的方式。确保合入信息可追溯和易回退。

Rebase解决冲突

适用情况

其中commit数量少(1~2个),开发周期短(1day)。

操作方式

其中dev分支向master分支合入。通过执行 git log --all --graph --decorate 可看到如下图。两个分支已经分开,如果通过在master分支git merge合入且存在冲突,那么会触发三方合并在master生成merge commit污染主分支提交历史,这是我们不想看到的。

此时我们执行以下流程解决问题

git checkout dev  && git pull dev
git rebase master // 保证master与remote仓库一致
// 若发生冲突执行 git mergetool  解决冲突
git rebase --continue

此时可以看到master分支和dev分支干净得合在一起。经过单元测试并确认我们的改动没有bug后,我们可以push并开启mr。

Squash解决冲突

适用情况

其中commit数量多(> 2个),开发周期长(> 1day),冲突量大(每个commit可能都有冲突)。

操作方式

此处仍然是将dev合入master。其中dev分支提交历史混乱(有tmp提交),commit号多且每个commit都与master有冲突。此时在master分支执行 git merge dev 会触发三方合并,且保留不必要的commit历史。不必要的提交信息如图

操作的初始状态如图


此处我们执行如下操作,在master分支解决冲突并压缩提交。随后checkout一个提交分支并开启mr。这有利于简化主分支提交。但需要小心,dev分支不能再使用,需要重新从master分支拉取新的dev。

git checkout master // 保证master与remote一致
git merge --squash dev
// 解决冲突  git mergetools  、  git commit -m <总结此次提交的所有内容>
git checkout -b <mr-branch>
git push xxxx

mater结果如图

Merge执行合入

这里强调使用merge no fast forward的目的是保留合入信息。

git checkout master
git merge --no-ff dev

以上就是Git的代码合入流程详解的详细内容,更多关于Git代码合入流程的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯