歌曲封面 未知作品

本站已加入Not By AI项目

使用HTTPS加密

本站已加入博客录 随机博客

粤公网安备44040402000217号

粤ICP备2023130441号

萌ICP备20241924号

网站已运行 1 年 330 天 6 小时 31 分

Powered by Typecho & Sunny

2 online · 544 ms

Title

😶 Github Pull Request 三种合并方式

Emotion

·

·

204次阅读
最佳实践
Article

merge pull request(创建合并提交)【默认】

commit id 不变,会多生成一个merge pull request的提交。如果使用git merge命令可能出现重复的提交历史,因为upstream 分支上commit id是已经变化(内容是一模一样,但会被认为是不同的两次提交)。

squash and merge(压缩与合并)

一个pr中的所有commit都会被压缩为一个总的commit再合并。假设原pr中有5次提交,压缩并合并后只会有一个commit。
格式如下:

提交数摘要描述
1单个pr的提交消息标题,后接拉取请求编号单个pr的提交消息正文
多个拉取请求标题,后接pr请求编号按日期顺序列出所有被压缩pr的提交消息

rebase and merge(变基与合并)

使用 github rebase and merge 会把pr中的每个提交的提交者都修改为 author + reviewer,且重新生成commit id,造成提交历史混乱。在这个pr合并后,如果开发者不基于最新的上游分支(upstream)分叉新创建分支,而是继续使用本地分支;如果要更新当前分支,那么这个开发者必须使用 git rebase 来变基到upstream分支上。

为什么不使用git merge?如果使用git merge命令就会出现重复的提交历史,因为 upstream 分支上是commit id是已经变化的提交(虽然提交的内容是一模一样,但还是会被人为是不同的两次提交)。
假如此开发者提交一次后,推送到远端并创建pr;该pr中原本应该只有一次提交,但是却多出来2次重复的提交。这就导致了历史的混乱。如下,红框中为重复的提交:

而使用git rebase,git 可以检测到重复的提交,即你本地的提交与远端github rebase后的提交是一回事(只是github rebase 更改了你的commit id),故在本地使用git rebase可以直接将本地分支更新为upstream上最新的(本地的commit id等信息被upstream 上的直接覆盖)。

pr中显示有数个提交,但是实际有影响的只有最新的那一个提交(重复的提交只会影响历史,并不影响代码内容,重复提交的更改已经合并过了)。但是将重复的提交历史合入仓库中,会影响代码仓库的历史追溯(可以使用squash and merge 来压缩这一次pr)。开发者打开pr查看历史会感到迷惑,所以应该要避免这种情况。

相关资料小结:

  1. 审查者一定要认真审视pr所包含的内容及带来的影响。
  2. 开发者最好不要长期使用一个分支。在更新本地分支时,merge or rebase 都会带来新的重复的提交(以前的提交都被认为是一个新的提交),继续用该分支新建pr,就有可能引入重复的提交。
  3. 合并后就删除来源分支也有帮助
现在已有 6 条评论,3 人点赞
Emotion
Comment:共6条
发表
  1. 头像
    @
    你的文章让我心情愉悦,真是太棒了! http://www.55baobei.com/A3WI0ZCZq6.html
    · Windows · Chrome · 美国纽约州伊利县威廉斯维尔村ColoCrossing有限公司

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  2. 头像
    @
    博主太厉害了!
    · Windows · Chrome · 中国北京市北京世通泰达通信技术有限公司联通节点

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  3. 头像
    @
    探秘传奇私服:神兽召唤秘籍,助你称霸沙城!:https://501h.com/jinbi/2024-10-17/42820.html
    · Windows · Chrome · 中国湖北省十堰市电信

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  4. 头像
    @
    重温传奇:游戏回忆录:https://501h.com/yuanshi/10795.html
    · Windows · Chrome · 中国湖北省十堰市电信

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  5. 头像
    @
    你的文章让我感受到了不一样的视角,非常精彩。http://www.njxcjzjx.com
    · Windows · Chrome · 美国纽约州伊利县威廉斯维尔村ColoCrossing有限公司

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  6. 头像
    @
    你的文章让我感受到了不一样的风景,谢谢分享。http://www.fxzs8.com
    · Windows · Chrome · 美国纽约州伊利县威廉斯维尔村ColoCrossing有限公司

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 不再显示
博主