目录总述Rebase解决冲突适用情况操作方式Squash解决冲突适用情况操作方式Merge执行合入总述 代码合入流程用于减轻代码合入复杂度、简化主分支历史(具有线性的历史)、保证合入
代码合入流程用于减轻代码合入复杂度、简化主分支历史(具有线性的历史)、保证合入代码对主分支的HEAD有效。
代码合入分为两步
其中第一步“解决冲突”的方法分为两种种情况:
其中第二步“执行合入”应采用 merge no-fast-forward 的方式。确保合入信息可追溯和易回退。
其中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。
其中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 no fast forward的目的是保留合入信息。
git checkout master
git merge --no-ff dev
以上就是Git的代码合入流程详解的详细内容,更多关于Git代码合入流程的资料请关注编程网其它相关文章!
--结束END--
本文标题: Git的代码合入流程详解
本文链接: https://lsjlt.com/news/172961.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0