在 Git Push 上创建拉取请求

3 github github-actions

我有 2 个分支的 GitHub 存储库:“master”和“develop”。

我们的工作流程是,任何代码都应该提交到“develop”分支,然后推送到 GitHub,然后应该创建一个 Pull Request 将提交合并到“master”分支。

我正在尝试编写一个操作,一旦开发人员将提交推送到分支“develop”并具有以下脚本,它将创建一个拉取请求:

name: Create pull request
on:
  push:
    branches:
      - develop
jobs:
  prForMasterBranch:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: master
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v2
        with:
          commit-message: update master branch
          title: Update master branch
          branch: develop
Run Code Online (Sandbox Code Playgroud)

我可以看到这个动作在“develop”分支的“Push”事件上已经成功执行了,但是我看不到任何新的Pull Requests!

我检查了该操作的日志,并在创建拉取请求的末尾找到了以下几行:

将拉取请求分支推送到 'origin/develop'
分支 'develop' 不再与基础分支 'master' 不同
关闭拉取请求并删除分支 'develop'

似乎我错过了一些东西,但无法弄清楚。

任何帮助表示赞赏。

Mad*_*hat 5

如果您查看create-pull-request 操作的文档,它会提到

创建拉取请求操作将:

  • 检查操作工作区中的存储库更改。这包括:
    • 未跟踪(新)文件
    • 跟踪(修改)文件
    • 在工作流中进行但尚未推送的提交
  • 将所有更改提交到新分支,或更新现有拉取请求分支。
  • 创建一个拉取请求以将新分支合并到基础分支——在工作流中检出的分支。

它总是需要一个可以提交更改的中间分支。

因此,如果您按如下方式修改工作流配置,添加Reset master branch从远程develop分支获取最新更改并重置master分支的步骤,并指定branch: temp操作,工作流将创建一个temp分支,其提交与您已推送到develop分支的提交相同,并且从打开一个PRtempmaster分支。在后续的开发提交中,它会继续对temp分支进行相同的更改,并以类似的方式打开 PR 或更新现有的 PR。

name: Create pull request
on:
  push:
    branches:
      - develop
jobs:
  prForMasterBranch:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: master
      - name: Reset master branch
        run: |
          git fetch origin develop:develop
          git reset --hard develop
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v2
        with:
          commit-message: update master branch
          title: Update master branch
          branch: temp
Run Code Online (Sandbox Code Playgroud)

请注意,temp分支将具有推送到develop分支的确切提交。