我的 github 存储库中有两个分支 -master
and dev
分支。我有一个需要合并的要求master
分支到dev
在以下条件下分支:
- 一旦 PR 直接合并到 master 分支,那么我需要自动将 master 分支合并回 dev 分支。
- 每当有人直接将提交添加到主分支时,我就需要合并
master
分支回到dev
自动分支。
这有可能做到吗?我相信我们可以使用 git Hooks 来完成这项工作,但我不知道该怎么做。有人可以提供一个如何实现这一目标的例子吗?
我在网上读到的,看起来我可以使用post-receive
与其中的以下内容挂钩,但我对如何执行此操作感到困惑,只有当有人添加提交时master
分支或任何 PR 被合并到主分支吗?这也是正确的方法吗?
git checkout master
git pull
git checkout dev
git pull
git merge master --no-ff --no-edit
git push
我明白,由于合并冲突,这可能并不总是可能的,但如果可能的话,我们希望它自动发生。
Update
阅读更多有关Github Actions
- 我创建了一个这样的文件.github/workflows/merge-back-to-dev.yml
在我的 git 存储库的根文件夹中,包含以下内容。这看起来合适吗?我需要所有这些字段吗runs-on
?
name: 'Nightly Merge'
on:
push:
branches:
- master
jobs:
nightly-merge:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Nightly Merge
uses: robotology/[email protected] /cdn-cgi/l/email-protection
with:
stable_branch: 'master'
development_branch: 'dev'
allow_ff: false
所以现在有了这个改变,每当我添加一个提交master
直接分支或任何 PR 合并到master
直接分支然后master分支会自动合并到dev分支对吧?
对于私有 GHE (GitHub Enterprise) 服务器,仅预接收钩子 https://stackoverflow.com/a/36896200/6309支持,这不是您所需要的(接收后挂钩就可以了)
由于 OP 也有一个 GitLab 服务器,gitab-ci.yml
可以做到这一点并执行合并。
有一点像这个要点 https://gist.github.com/smutkiewicz/61b2f8d00f3561a20227fad54c2658f7#file-gitlab-ci-yml-L156-L165:
merge_back:
stage: merge back master to dev
only:
- master
script:
- git config --global user.email "$GIT_USER_EMAIL"
- git config --global user.name "$GIT_USER_NAME"
- git switch dev
- git merge $CI_COMMIT_SHA --no-commit --no-ff
原始答案(当我以为是关于 github.com 时)
那不会使用钩子,但是GitHub 操作 https://github.com/features/actions,这有助于自动化在 GitHub 端执行的流程(与在客户端执行的钩子相反)
您可以使用on.<push|pull_request>.<branches|tags> https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#onpushpull_requestbranchestags进入你的.github/workflows/myscript.yml
(您可以将“myscript”替换为更夸张的名称,例如merge-back-to-dev.yml
)
您可以使用类似的操作nightly-merge https://github.com/marketplace/actions/nightly-merge,它会自动合并稳定分支(master
or main
)进入开发一。除了您的情况之外,您将在推送事件上显式调用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)