我们希望每当将更改提交到主分支时(目前需要手动操作,而且容易被忘记),能够自动将这些更改合并到另一个长期存在的分支中。
我们知道由于合并冲突的存在,这可能并不总是可行的,但是如果可能的话,我们希望这个过程能够自动进行。
这种自动化是否可行?
我们知道由于合并冲突的存在,这可能并不总是可行的,但是如果可能的话,我们希望这个过程能够自动进行。
这种自动化是否可行?
此方法将自动合并您的分支至主分支,无需手动创建拉取请求。
只需在您的存储库中创建 .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
此外,不要忘记在您的仓库的“Actions”页面上启用此工作流。您也可以手动运行它。如果合并失败,您将收到来自GitHub的电子邮件。
GitHub本地自动合并功能在两天前的GitHub Universe上被引入。
如何启用? 进入您的存储库的设置,例如 https://github.com/rectorphp/rector/settings,然后 ↓
提示:想要防止合并的分支堆积吗?也可以启用自动分支删除
虽然它可能不完全满足您的需求,但与GitHub Actions一起使用可以更轻松地完成任务。
我已经使用了一段时间 https://github.com/marketplace/actions/merge-pull-requests,它的效果非常好。在该页面上,您可以找到如何使用它的说明。
如果您需要更具体的工作流程,也可以尝试使用https://mergify.io/。