【Python程序开发系列】聊一聊github的pull request几种合并方式

这篇具有很好参考价值的文章主要介绍了【Python程序开发系列】聊一聊github的pull request几种合并方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是PR

      在正常的工作流程中,PR 用于将一个分支的更改合并到另一个分支,而这些更改通常以提交的形式存在。每个提交都有一个唯一的提交 ID,用于标识和跟踪更改的历史。因此一般情况下PR包含源分支的多个commit提交记录(pr_commit_ids),也有可能不包含任何commit。

      如果一个 PR 没有任何提交 ID,可能有以下几种情况:

  • PR 是空的:这意味着在创建 PR 之前,没有进行任何代码更改或提交。可能是由于误操作或其他原因,未正确添加更改并提交到分支中。
  • PR 的提交已被删除:在某些情况下,可能会发生提交被删除或重置的情况。如果在创建 PR 之前提交已被删除,那么该 PR 将不包含任何提交 ID。
  • PR 是用于讨论或协作:有时,团队成员可能会创建一个 PR,以便进行讨论、提出问题或请求反馈,而不涉及实际的代码更改。这种情况下,PR 可能只包含标题、描述和评论等信息,而没有实际的提交。

      无论是哪种情况,一个没有提交 ID 的 PR 通常不会触发自动化构建、测试或代码审查等流程,因为没有实际的代码更改需要进行处理。

二、PR合并的三种方式

      一旦创建PR就就意味着你发起了分支1(head,源分支)------->分支2(base,目标分支)的合并请求,就会产生一个PR链接:(如:https://github.com/quwenqiang2019/xxxxxx/pull/6),此时这个PR的状态是open,合并这个PR通常有三种方式,合并完成之后PR的状态就是merged或closed。如果PR没有合并,继续向源分支进行提交,这些创建PR之后新的提交将自动包含在该 PR 中。

2.1 create a merge commit

        这是最基本的merge,这种情况下,pr包含的commit_ids(源分支的所有提交记录)会同步到中央仓库目标分支里面,合并之后目标分支上还会产生一个merge commit id。这个merge commit id就是将pr包含的commit_id(源分支的所有提交记录)会同步到中央仓库目标分支这个操作的提交。

2.2 squash and merge

        这种情况下,pr包含的commit_ids(源分支的所有提交记录)不同步中央仓库目标分支里面,这种方式,当前分支(源分支)的多个提交会被压缩,在目标分支上形成一个提交(merge commit id),这个merge commit id就代表压缩源分支多个提交这个操作。

2.3 rebase and merge

        这种情况下,pr包含的commit_ids(源分支的所有提交记录)通过变基,在目标分支上形成多个新的commit id逐个应用到目标分支上。这些新的提交会按照原始提交的顺序添加到目标分支上,形成一个线性的提交历史。因此变基(rebase)操作不会产生合并提交(merge commit id)。

三、一个简单的例子(merge合并)

pulls/20:

github 怎么合并request,git,github,git,个人开发

PR包含的commit_id是指源分支所有单个提交的commit_id(这其实是本地git commit产生,然push进行同步),而不是合并提交的merge_commit_id。merge_commit_id是合并操作的结果。61a0c56是pulls/20合并操作产生的merge_commit_id,是合并完成之后目标分支的最新commitID。

pulls/21:

github 怎么合并request,git,github,git,个人开发

这个PR(源分支上)有三次提交记录,包含三个commitID。我们一起通过API看下这个PR的详细信息:

源分支:

github 怎么合并request,git,github,git,个人开发

  • label是标签名称

  • ref是源分支名称

  • sha是源分支上最新的commit_id,也就是最后(最新)一次提交的commit_id

目标分支:

github 怎么合并request,git,github,git,个人开发

  • label是标签名称

  • ref是源目标名称

  • sha不是pulls/21合并产生的,是目标分支上最新的commit_id(由于目标分支上没有新的提交,这里也就是上一次pulls/20合并产生的commitID)

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。文章来源地址https://www.toymoban.com/news/detail-831066.html

到了这里,关于【Python程序开发系列】聊一聊github的pull request几种合并方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 当程序员的好处和坏处,我用七年经历来和大家聊一聊

    首先,我毕业于四川某不知名的二本院校,于2016年进入工作岗位,到目前为止已经工作了快七年的时间。我干着一份朝九晚八的工作,目前坐标是在成都,也在那里买了房子,过着一个普通小老百姓的生活。这七年来,我遇到了很多挑战,但也学到了很多技能和知识。回顾这

    2023年04月21日
    浏览(44)
  • 聊一聊近段时间大火的ChatGPT,它真的能代替程序员导致失业潮来袭吗?

    OpenAI又火了!近期许多人的朋友圈里都混进了一个让人既爱又怕的狠角色,以至于StackOverflow不得不急忙下架。 近日,OpenAI发布了聊天AI ChatGPT,短短几天,其用户量直冲百万级,甚至服务器一度被注册用户挤爆了。 这种被网友惊叹“超越谷歌搜索”的神器究竟怎么做到的?到

    2023年04月17日
    浏览(54)
  • 微信小程序教学系列(8)- 小程序国际化开发

    欢迎来到第八章!这一次我们要谈论的是小程序国际化开发。你可能会问,什么是国际化?简单来说,国际化就是让小程序能够适应不同的语言和地区,让用户们感受到更亲切、更贴心的使用体验。下面就让我们一起探索一下吧! 1. 小程序国际化概述 在这个日益全球化的时

    2024年02月09日
    浏览(50)
  • 聊一聊大模型

    事情还得从ChatGPT说起。 2022年12月OpenAI发布了自然语言生成模型ChatGPT,一个可以基于用户输入文本自动生成回答的人工智能体。它有着赶超人类的自然对话程度以及逆天的学识。一时间引爆了整个人工智能界,各大巨头也纷纷跟进发布了自家的大模型,如:百度-文心一言、科

    2024年02月05日
    浏览(59)
  • 聊一聊 TLS/SSL

    哈喽大家好,我是咸鱼 当我们在上网冲浪的时候,会在浏览器界面顶部看到一个小锁标志,或者网址以 \\\"https://\\\" 开头 这意味着我们正在使用 TLS/SSL 协议进行安全通信。虽然它可能看起来只是一个小小的锁图标和一个 “https” ,但实际上,这个协议在保护我们的在线隐私和安

    2024年02月08日
    浏览(55)
  • 聊一聊synchronized

    在 Java 中, synchronized 可以用于实现线程同步,有以下几种常见的使用方式: 修饰代码块:将 synchronized 放在代码块的前面, 例如: 在这种方式下,会为给定的对象 obj 获取锁,在代码块执行期间,只有持有该锁的线程才能进入代码块执行。 修饰方法:将 sync

    2024年01月22日
    浏览(63)
  • 聊一聊模板方法模式

    统一抽取,制定规范; 模板方法模式,又叫模板模式,属于23种设计模式中的 行为型模式 。在抽象类中公开定义了执行的方法,子类可以按需重写其方法,但是要以抽象类中定义的方式调用方法。总结起来就是: 定义一个操作的算法结构,而将一些步骤延迟到子类中。在不

    2024年02月04日
    浏览(57)
  • 聊一聊AIGC

    “UGC不存在了”——借鉴自《三体》 ChatGPT 的横空出世将一个全新的概念推上风口——AIGC( AI Generated Content)。 GC即创作内容(Generated Content),和传统的UGC、PGC,OGC不同的是,AIGC的创作主体由人变成了人工智能。 xGC PGC:Professionally Generated Content,专业生产内容 UGC:User G

    2024年02月10日
    浏览(64)
  • 抖音小程序开发教学系列(4)- 抖音小程序组件开发

    在本章中,我们将深入探讨抖音小程序的组件开发。组件是抖音小程序中的基本构建块,它们负责展示数据和与用户交互。了解组件的开发方法和使用技巧是进行抖音小程序开发的重要一步。 抖音小程序提供了许多常用的基本组件,它们分别具有不同的功能和用途。在我们的

    2024年02月09日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包