gpt4 book ai didi

git - 在某些条件下使用钩子(Hook)自动将一个分支 merge 到另一个基础上?

转载 作者:行者123 更新时间:2023-12-03 23:42:49 30 4
gpt4 key购买 nike

我的 github 存储库中有两个分支 - masterdev分支。我有一个需要 merge 的需求master分支到 dev在以下条件下分支:

  • 一旦 PR 直接 merge 到 master 分支,我需要自动将 master 分支 merge 回 dev 分支。
  • 每当有人直接向主分支添加提交时,我需要 merge master分支回 dev自动分支。

  • 这有可能做到吗?我相信我们可以使用 git Hooks 完成这项工作,但我不知道该怎么做。有人可以提供一个如何实现这一目标的例子吗?
    我在网上看了一下,好像可以用 post-receive与下面的内容 Hook ,但只有当有人向 master 添加提交时,我才对如何执行此操作感到困惑分支或任何 PR merge 到主分支?这也是正确的方法吗?
      git checkout master
    git pull

    git checkout dev
    git pull

    git merge master --no-ff --no-edit
    git push
    我明白,由于 merge 冲突,它可能并不总是可能的,但如果可能的话,我们希望它自动发生。
    更新
    阅读更多关于 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/gh-action-nightly-merge@v1.3.1
    with:
    stable_branch: 'master'
    development_branch: 'dev'
    allow_ff: false
    所以现在有了这个改变,每当我向 master 添加提交时直接分支或任何 PR merge 到 master直接分支然后master分支会自动 merge 到dev分支对吗?

    最佳答案

    对于私有(private) GHE (GitHub Enterprise) 服务器,仅 pre-receive hooks受支持,这不是您需要的(接收后 Hook 会很好)
    由于 OP 也有 GitLab 服务器,因此 gitab-ci.yml可以做到这一点并执行 merge 。
    有点像 this gist :

    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 时)
    那不会使用钩子(Hook),而是 GitHub Actions ,这有助于自动化在 GitHub 端执行的过程(与在客户端执行的钩子(Hook)相反)
    您可以使用 on.<push|pull_request>.<branches|tags> 进入您的 .github/workflows/myscript.yml (您可以用更夸张的名称替换“myscript”,例如 merge-back-to-dev.yml )
    您可以使用 nightly-merge 之类的操作,它会自动将稳定分支( mastermain ) merge 到开发分支中。除了你的情况,你会在推送事件上明确调用它。

    关于git - 在某些条件下使用钩子(Hook)自动将一个分支 merge 到另一个基础上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64759535/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com