在Git Push上创建拉取请求

时间:2020-06-03 12:35:43

标签: github github-actions

我有GitHub存储库,其中有2个分支:“ 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

我可以看到此操作已在“ develop”分支的“ Push”事件上成功执行,但看不到任何新的Pull Request!

我检查了操作日志,并在拉取请求创建结束时找到了以下几行:

将拉取请求分支推送到“源/开发”
分支“开发”与基础分支“主”不再不同
关闭拉取请求并删除分支“ develop”

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

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

“创建请求请求”操作将:

  • 在“动作”工作空间中检查存储库更改。这包括:
    • 未跟踪的(新)文件
    • 跟踪(修改)的文件
    • 工作流中尚未推送的承诺
  • 将所有更改提交到新分支, 或更新现有的拉取请求分支。
  • 创建拉取请求以 将新分支合并到基础中-在 工作流程。

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

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

temp

请注意,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 分支将具有推送到temp分支的确切提交。