【问题标题】:Can I create a pull request using the same branch as the base and compare branch?我可以使用与基础分支相同的分支创建拉取请求并比较分支吗?
【发布时间】:2018-01-27 16:53:48
【问题描述】:

我有一个包含 master 和分支的 github 存储库。我们一直在分支上进行开发,然后每次发布版本时,我们都会将分支的更改合并到 master 中,然后再次在分支上开始下一阶段的开发。现在,我们被要求使用拉取请求来修复分支上的错误。那么问题来了,如何单独在分支上做所有的pull request,而不涉及master?

更具体地说,我的 branchA 有一个错误修复更改,然后我提交并推送到 branchA 存储库,然后我转到我的 github 存储库网页并尝试通过指定基本分支和比较分支来执行拉取请求作为 'branchA',然后 github 说:没有什么可比较的。您需要使用两个不同的分支名称来进行有效比较。这绝对是有道理的,所以我问是否可以通过拉取请求以某种方式比较 SAME 分支之前和之后的错误修复。

【问题讨论】:

  • 你在使用远程 git 托管服务吗?例如。 github、bitbucket 还是 gitlabs?
  • 对不起,是github
  • 你说你推到了branchA——如果你想在branchA中创建一个PR,那么你需要从branchA分支出来并从它创建一个PR到branchA中。如果您只是推送到 branchA,则没有什么可以创建 PR。
  • @DaveNewton 那么,是否有可能在推送之前进行 PR?
  • ...我认为您误解了预期的工作流程。假设我想在 branch-a 上做一些事情,但不直接修改它,例如,针对 branch-a 创建一个 PR。我创建了一个新分支,命名为branch-a-fix。我推高branch-a-fix。我创建了一个从branch-a-fixbranch-a 的PR。 PR 被审查并最终合并(为了争论)。现在branch-a 包含修复。最终你可以创建一个从 branch-amaster 的 PR。

标签: git github pull-request


【解决方案1】:

如果 PR 将从同一个 github repo 发出,则必须通过分支完成,即从已知分支创建一个分支并进行更改,然后通过比较两个分支来创建 PR。感谢所有帮助确认这一点的人。

如果有人对 github 存储库进行了分叉,则分叉存储库中的更改可用于基于看似相同的分支发布 PR(在两个不同的存储库中,即一个是原始的,另一个是分叉的)。这就是我感到困惑的地方,因为我看到 PR 似乎来自同一个分支,但实际上,从技术上讲,它来自不同的 repo(一个 fork)。

【讨论】:

    【解决方案2】:

    “仅在分支上执行所有拉取请求”“不涉及 master” 短语真的没有意义,因为 拉取请求 基本上是一组更改,请求合并到一个分支中,在你的例子中是master 分支。

    这是来自GitHub's page on pull requests的描述:

    拉取请求可让您告诉其他人您已推送到 GitHub 上的存储库。打开拉取请求后,您可以讨论 并与合作者一起审查潜在的变化并添加后续行动 在将更改合并到存储库中之前提交。
    ...
    初始化拉取请求后,您将看到一个评论页面,其中显示 您的分支之间更改的高级概述(比较 分支)和存储库的基础分支。

    此外,creating a pull request 将要求您指定要将更改合并到的分支,在您的情况下,该分支将是 master 分支。

    如果您打算从不涉及master 分支,则可以create a patch 代替与错误修复相关的提交,然后在那里执行代码审查。 (你也可以create a patch by diff-ing修改过的文件)。但这只会让代码审查更加困难。

    【讨论】:

    • PR 可以针对任何分支,这可能会或可能不会在分支的生命周期中涉及 master。他们经常这样做。你的第一句话没有提到分支,只有包含所有分支的 repo。例如,可能有一个长期存在的分支与 master 并行存在,master 合并到该分支中,但从不合并。
    • @DaveNewton,我更新了我的原始帖子以更具体地描述我的问题,请看一下,谢谢。
    • @DaveNewton 你是对的。我正在研究只有 2 个分支的 OP 用例,masterbranch。我编辑了我的答案以澄清这一点。
    【解决方案3】:

    Pull 请求只是告诉 github,我希望这个分支只有在它被审查和批准后才能接受这个提交。

    在做拉取请求的时候,涉及到两个分支 1.比较分支(你正在推动的那个) 2. 基础分支(审核通过的分支)

    基础分支通常是master,但不限于master。

    只需将其更改为您要合并 PR 的分支即可!

    Pull requests 不只针对 master!

    【讨论】:

    • 我在问 PR 作为将 branchA(bugfix) 合并到 branchA(bugfix 之前的同一个 branchA) 的请求是否可行?我试过了,好像不行,是这样吗?
    • @ForComment 答案表明它是,它是。
    【解决方案4】:

    正如您所提到的,您对(主题)分支进行了开发,然后将其合并到 master。理想情况下,这也是使用拉取请求 (PR) 的主题。

    将 PR 视为将 branchA(topi/development/bugfix) 合并到 branchB(master) 的请求。为什么不像以前那样直接合并呢?让其他开发人员在将代码合并到稳定的分支或使用 CI/CD 服务器之前对其进行审查。

    【讨论】:

    • 我在问 PR 作为将 branchA(bugfix) 合并到 branchA(bugfix 之前的同一个 branchA) 的请求是否可行?我试过了,好像不行,是这样吗?
    • @ForComment 这绝对是可能的,而且很常见。当您打开 PR 时,您可以指定它的目标分支。
    • @DaveNewton 我已经更新了我的原始帖子以更具体地说明我的问题,请看一下,谢谢。
    • @ForComment 在同一个分支中,我认为你不能。创建分支很便宜,只需创建一个并 PR 即可。 stackoverflow.com/questions/34027850/…
    猜你喜欢
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2014-01-18
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    相关资源
    最近更新 更多