GitHub能否自动合并分支?

69
我们希望每当将更改提交到主分支时(目前需要手动操作,而且容易被忘记),能够自动将这些更改合并到另一个长期存在的分支中。
我们知道由于合并冲突的存在,这可能并不总是可行的,但是如果可能的话,我们希望这个过程能够自动进行。
这种自动化是否可行?

2
现在你可以使用Github actions了 https://github.com/features/actions - Sanket Meghani
我很好奇你最终做了什么(如果有的话),以及你是否对自己的解决方案感到满意,@Kram。 - theartofrain
@theartofrain - 看起来 GitHub Actions 可能仍然是唯一的方法。下面有一个很好的例子,我打算尝试一下。 - Kram
3个回答

11

自 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”替换为您的主分支名称
  • 编辑“cron”行以调整计划

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


3
这个很好用!我唯一改变的是将“on”改为使用“push”触发器,这样它就会在每次推送更改到主分支时自动运行。 - Kram

6

自2020年12月16日起可用

GitHub本地自动合并功能在两天前的GitHub Universe上被引入。

如何启用? 进入您的存储库的设置,例如 https://github.com/rectorphp/rector/settings,然后 ↓

enter image description here


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


来源

虽然它可能不完全满足您的需求,但与GitHub Actions一起使用可以更轻松地完成任务。


已经引入了自动合并功能:在使用受保护分支时,可以自动合并拉取请求(#107)。在接下来的几周内推出,在您的存储库设置中启用。https://github.blog/2020-12-08-new-from-universe-2020-dark-mode-github-sponsors-for-companies-and-more/ - 00schneider
1
@00schneider 目前还没有。公共测试版的发布时间尚不确定。 - Tomas Votruba
2
https://github.blog/changelog/2020-12-16-pull-request-auto-merge-public-beta/ - 它已经发布了 - Robert Hung
13
OP要求将主分支的更改合并到其他分支(无需PR)。这个回答是关于自动关闭PR(通常是从other_branch => master方向)。 - JellicleCat
@JellicleCat 是的,你是对的。这个答案是不正确的,无论一次性自动合并有多么有用。 - Kram
显示剩余2条评论

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接