【问题标题】:Can GitHub automatically merge branches?GitHub可以自动合并分支吗?
【发布时间】:2016-05-28 11:27:36
【问题描述】:

我们希望在任何更改提交到 master 时自动从 master 合并到另一个长期存在的分支(目前,这是一个手动过程,人们忘记了)

我明白,由于合并冲突,它可能并不总是可行,但如果可以,我们希望它自动发生。

这可能吗?

【问题讨论】:

标签: git github


【解决方案1】:

我使用https://github.com/marketplace/actions/merge-pull-requests 已经有一段时间了,效果很好。在该页面中,您有如何使用它的说明。

如果您需要更具体的工作流程,也可以尝试https://mergify.io/

【讨论】:

    【解决方案2】:

    自 2020 年 12 月 16 日起可用

    原生 GitHub Auto-Merge 于 2 天前在 GitHub Universe 上推出。

    How to active them? 转到存储库的设置,例如https://github.com/rectorphp/rector/settings,然后↓


    提示:你想防止合并的分支堆积吗?也启用自动分支删除


    Source

    虽然它可能不仅仅是您的用例所需要的,但它可以与 GitHub Actions 一起使用以更轻松地实现目标。

    【讨论】:

    • 引入了自动合并:自动合并拉取请求(#107):当使用受保护的分支时。在接下来的几周内推出,在您的回购设置中启用。 github.blog/…
    • @00schneider 还没有。公开测试版没有明确的预计到达时间。
    • 我仍然很困惑是否可以配置 PR:s 的完全自动合并,或者这是否需要有人手动将 PR 标记为允许在事情变绿后自动合并?
    • OP 要求将来自 master 的更改合并到其他分支(没有 PR)。这个发布的答案是关于自动关闭 PR(通常在 other_branch => master 的方向)。
    【解决方案3】:

    自 2019 年 8 月 13 日起,您可以使用 GitHub Actions

    此方法会将您的分支与主分支合并,而无需手动创建拉取请求。

    只需在您的存储库中创建 .github/workflows/automerge.yml 文件,其中包含以下内容:

    name: Automerge
    
    on:
      workflow_dispatch:
      schedule:
        # You can setup schedule here
        - cron: '0 0 * * *'
    
    env:
      # replace "github_username" with your GitHub username
      # replace "github.com/username/repo.git" with your GitHub repo path
      # do NOT replace ${{secrets.GITHUB_TOKEN}}, GitHub will take care of it
      MY_REPO: https://github_username:${{secrets.GITHUB_TOKEN}}@github.com/username/repo.git
    
      # replace "long-lived_branch_name" with your branch name
      MY_BRANCH: long-lived_branch_name
    
      # replace it with the path to master repo
      MASTER_REPO: https://github.com/username/master_repo.git
    
      # replace "master" with your master branch name
      MASTER_BRANCH: master
    
    jobs:
      merge:
        runs-on: ubuntu-latest
    
        steps:
        - name: Merge with master
          run: |
            git clone ${{env.MY_REPO}} -b ${{env.MY_BRANCH}} tmp
            cd tmp
            git config user.name "Automerge Bot"
            git config user.email "bot@example.com"
            git config pull.rebase false
            git pull ${{env.MASTER_REPO}} ${{env.MASTER_BRANCH}}
            git push
    
    
    • 将“github_username”替换为您的 GitHub 用户名
    • 将“github.com/username/repo.git”替换为您的 GitHub 存储库路径
    • 将“long-lived_branch_name”替换为您的分支名称
    • 将“master”替换为您的 master 分支名称
    • 编辑“cron”行以调整计划

    另外,不要忘记在您的代码库的“操作”页面上启用此工作流程。您也可以手动运行它。如果合并失败,您将收到一封来自 GitHub 的电子邮件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 2014-11-28
      相关资源
      最近更新 更多