【问题标题】:How to merge from a pull request into master without closing the pull request如何在不关闭拉取请求的情况下从拉取请求合并到主控
【发布时间】:2014-05-17 10:27:56
【问题描述】:

假设我有一个分支demos,它的存在是为了针对master 中的任何内容创建演示代码。我希望demo 分支的提交能够非常频繁地 ping 每个人,通常是作为拉取请求的一部分。

也就是说,我创建了分支demos 和该分支的初始提交,然后从中发出了拉取请求。我想将它合并到master,但同时保持拉取请求处于打开状态,这样当新的提交被推送时,它们就会成为同一个拉取请求上的更多提交。

这似乎并不容易实现——一旦我从demos 手动合并到master,它会自动“关闭”github 上的拉取请求。但现在我想对同一个 demos 分支添加更多更改,并提交和推送,只需让它 ping 每个关心 demos 的人作为同一个拉取请求的一部分。

由于这并不容易,这让我认为这是错误的。有时在git 中做简单的事情是错误的(比如使用pull),但规则通常是,如果你不遗余力地去做git 不自然地做的事情,那么你就是可能是用错了。

我想以git 社区和最佳实践认为良好的方式处理此案例。但与此同时,这似乎是一个非常明显的用例:一个拉取请求以提醒其他人从分支中获取更改,但在合并后不考虑请求“完成”。一个持续的拉取请求。

我可以一直生成一个新的拉取请求,但它并没有保持不同的demos 提交在逻辑上连接在一起,就其在 github 上的显示方式和提醒人们的方式而言。在提交级别,对demos 的更改彼此不同,甚至可能来自不同的作者。但在拉取请求级别,我希望它看起来像“当任何人有东西要通过demos 推送时,它都是通过这个拉取请求来的。”

该工作流程的不足之处是什么,为什么从 git 中的 PR 合并时它不是一个选项?

【问题讨论】:

  • 刚看完标题,就不能git checkout master; git merge branch/with/pull/request吗?
  • 这会自动关闭打开的 PR。也许有一个设置可以禁用它?
  • 我怎么从来没有注意到这个.....
  • 我遇到了同样的问题。我想将中间结果合并到“开发”分支,而不是用所有对话杀死 PR

标签: git github merge pull-request


【解决方案1】:

由于没有公认的解决方案,我会向其他可能正在寻找类似解决方案的人推荐这个。看看 GitHub 的 Webhook 功能,我认为它比拉取请求更适合 OP 试图实现的目标。使用它,您可以将提交报告到另一个系统,如 AWS SNS、twitter、IRC 等,观察者可以订阅更新。

第三方服务挂钩列表可在以下位置找到 https://github.com/github/github-services/tree/master/lib/services

【讨论】:

    【解决方案2】:

    我不完全确定我是否遵循,但我不认为单个拉取请求是处理您的用例的理想方式。 Github 拉取请求是 Github 的一项功能,他们制作了它们,以便一旦该提交被合并到存储库中,它就会关闭该 PR。

    就名称而言,拉取请求是将一组特定的提交拉入该存储库的请求,一旦它们被合并,它就会自动关闭。

    如果您在 Github 上,问题可能会满足您的需求来协调此问题,您可以从每个拉取请求中引用它。如果您使用的是不同的错误跟踪系统,例如 Bugzilla 或 Trello 或任何您想要的,那么长期运行的票可能是最好的。

    这可能不是那么准确,因为我不完全确定我是否遵循了您的操作,如果是,请道歉。

    【讨论】:

    • 这是我不明白的“自动关闭它们”部分。为什么没有选项让 PR 在合并后保持打开状态?是的,PR 最初指的是一大块提交,但也许稍后我希望同样的持续、永无止境、始终未决的 PR 来指代该分支中发生的任何更多提交。它为提交提供了一个线性可见的好地方,并且很容易配置为 ping 每个人。
    • 当然,每次在该分支上共享一个提交块时,我可以只使用单独的 PR,但是它们看起来像是不同的事件,而不是同一领域的一个有机增长流代码。
    • 拉取请求是对要合并到主存储库中的特定有限提交集的请求。长时间运行的合并集最好在不同的功能中处理,例如错误跟踪票证或 Github 问题,因为根据定义,一旦它引用的提交被合并到存储库中,拉取请求就完成了。请注意,您不必将其合并到master,您可以合并到demo,然后稍后将其合并到master,将demo 与这些提交的日志一起保存在存储库中。
    • 根据我的理解,我确实认为您试图将用例硬塞到错误的位置。 Github 上的问题处理对拉取请求的引用,并且不会更改或关闭,除非拉取请求中有“关闭 #”或“解决 #”或类似的字眼。
    猜你喜欢
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    相关资源
    最近更新 更多