在某些条件下使用钩子自动将一个分支合并到另一个分支?

2024-04-18

我的 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(使用前将#替换为@)

在某些条件下使用钩子自动将一个分支合并到另一个分支? 的相关文章

  • 是否可以从一个存储库中拉取并推送到另一个存储库?

    我在 github 上有一个公开的存储库 在那里我有一个正在开发的开源应用程序 用于制作产品目录和小型 cms 内容 我还有一个私有存储库 未托管在 github 中 它是在 github 中托管的开源应用程序下开发的应用程序 由于我目前正
  • 如何修复“致命:无法创建工作树目录'WSL-Distribution-Switcher':没有这样的文件或目录”

    我目前正在尝试在我的笔记本电脑上安装 kali linux 但我陷入了这个错误 请帮我解决这个问题 谢谢 i typed cd Desktop cd Test Blank folder in Desktop git clone https
  • Phonegap - 自动包含正确的科尔多瓦

    我正在 iOS 和 Android 上开发一个 PhoneGap 应用程序 并使用 git 控制我的 www 目录版本 我知道我的 HTML 文件需要包含正确的 Cordova js 文件 取决于我当前正在开发的平台 当有人在 Androi
  • 推送到 Git (GitLab) 时出现错误 401

    我收到错误 Total 4 delta 2 reused 0 delta 0 error RPC failed result 22 HTTP code 401 当推送到 GitLab 上的 git 存储库时 它曾经有效 我遇到了同样的问题
  • 从 IntelliJ IDEA 中的版本控制中删除文件

    我正在使用 IntelliJ IDEA 社区版 2016 1 我已将我的项目放在 Git 下 并将其托管在 GitHub 上 When I first hit that Share Project on GitHub button ever
  • 为什么在将应用程序部署到 Heroku 时会出现此错误?

    使用 git hub 将应用程序部署到 heroku 时遇到某种错误 问题是 我不理解 heroku 日志和随之而来的错误 这是 Heroku 日志 Marcuss MacBook Pro Weather App marcushurney
  • “分支”到底是什么意思?

    长话短说 据我所知 术语 分支 Git 术语 可能指的是相关但不同的事物 指向提交的非符号引用 指针 此类引用的名称 例如 master 存储库提交 DAG 的子图 由此类引用所指向的提交可到达的所有提交组成 然而 我发现这个术语显然指的是
  • 2017 年在 OS X 上从源代码构建 Apache Hadoop

    到目前为止 我已经分叉了 Git 存储库 https github com apache hadoop 我一直在寻找有关如何从源代码构建的信息 我尝试过以下命令 mvn package Pdist Dtar DskipTests 这导致了以
  • Github 贡献图中未显示进度?

    我在 github 中的存储库是公开的 当我通过命令行将文件从本地系统推送到 github 时 新贡献不会显示在贡献直方图中 但是 当我将任何文件直接添加到 github 的存储库中时 贡献会显示在直方图中 这是什么原因呢 一个可能的原因是
  • Github 操作/缓存工作的限制在什么范围内?

    我不太明白Github到了什么程度动作 缓存有效 我的意思是 如果我发出拉取请求 然后在同一个拉取请求中添加 1 个提交 则缓存工作正常 但如果我在同一分支中创建新的拉取请求 缓存将重置并再次启动 但为什么呢 有没有办法将文件缓存扩展到所有
  • 客户端和服务器的 Git 分支结构

    对于我的一门计算机科学课程 我和一个小组正在使用客户端 服务器架构编写一个应用程序 我很好奇在 Git 存储库中组织项目的最佳实践是什么 我的意思是 我们是否应该像这样构建目录 ProjectDir Clients Client1 file
  • 我们如何从团队项目中的所有 Git 存储库连接到 TFS?

    我正在运行最新的 Visual Studio 2013 Ultimate 和 Update 1 我们也有最新的 Team Foundation Server 2013 我们中的一些人对新的 Git 存储库集成感到非常兴奋 但似乎有一个相当大
  • 如何在 git log 中查看提交的 git bisect 状态?

    我正在做 git bisect 到目前为止我发现了一些好的和坏的提交 我可以通过运行来确认git bisect log 但是 如果我为我的分支运行 git loggit log graph decorate full origin mast
  • 无法获取 https://gerrit.googlesource.com/git-repo/clone.bundle

    我尝试按照以下说明创建一个 git 存储库 source android com source downloading html installing repo 但是当我尝试在工作目录中初始化存储库时 使用 Ubuntu 出现以下错误 wo
  • 世博会错误 - 无法加载所有资源

    由于某种原因 当第一次使用命令启动我的应用程序时expo r ci no dev我收到Failed to load all assets error 收到错误的图像 https i stack imgur com pcvv4 png 如果我
  • 如何设置PS1使git和conda都可以在bash中显示?

    我的 bashrc show a short way shortwd num dirs 3 pwd symbol newPWD PWD HOME if echo n newPWD awk F print NF gt num dirs the
  • 两个人同时在 git 中处理一个文件[重复]

    这个问题在这里已经有答案了 可能的重复 当两个对等点同时将更改推送到同一个远程时 git 如何工作 https stackoverflow com questions 4643998 how git works when two peers
  • 如何为特定存储库配置 AWS CodeCommit 配置文件

    我有以下问题 作为我工作的一部分 我处理多个 AWS 账户 每个账户都有一个单独的 AWS CodeCommit 存储库和特定于账户的 IAM 用户 这会导致不同的用户 ID 我想找到一种方法来配置我的 ssh 以根据存储库访问不同的帐户
  • 自定义 github 页面的预览图像

    是否可以自定义在将链接发布到 github 页面时看到的预览图像 我觉得他们专门解决了 github 存储库的问题here https docs github com en github administering a repository
  • 预提交钩子 git 错误

    我正在尝试在 python 中执行预提交 git hook 以检查文件的行长度是否小于 80 个字符 但是我收到没有此类文件 目录的错误 我在 fedora 上并设置了 usr bin python help 将不胜感激 usr bin e

随机推荐