【发布时间】:2016-05-28 11:27:36
【问题描述】:
我们希望在任何更改提交到 master 时自动从 master 合并到另一个长期存在的分支(目前,这是一个手动过程,人们忘记了)
我明白,由于合并冲突,它可能并不总是可行,但如果可以,我们希望它自动发生。
这可能吗?
【问题讨论】:
-
您现在可以使用 Github 操作 github.com/features/actions
我们希望在任何更改提交到 master 时自动从 master 合并到另一个长期存在的分支(目前,这是一个手动过程,人们忘记了)
我明白,由于合并冲突,它可能并不总是可行,但如果可以,我们希望它自动发生。
这可能吗?
【问题讨论】:
我使用https://github.com/marketplace/actions/merge-pull-requests 已经有一段时间了,效果很好。在该页面中,您有如何使用它的说明。
如果您需要更具体的工作流程,也可以尝试https://mergify.io/。
【讨论】:
原生 GitHub Auto-Merge 于 2 天前在 GitHub Universe 上推出。
How to active them? 转到存储库的设置,例如https://github.com/rectorphp/rector/settings,然后↓
提示:你想防止合并的分支堆积吗?也启用自动分支删除
虽然它可能不仅仅是您的用例所需要的,但它可以与 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 的电子邮件。
【讨论】: