You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅在推送时触发GitHub Workflow,PR合并后不触发

解决GitHub Push Workflow在PR合并时不触发的问题

问题根源

当Workflow由push事件触发时,github.event.pull_request对象并不存在,因此你之前使用的github.event.pull_request.merged == false条件完全无效,无法区分普通推送和PR合并推送。

可行解决方案

合并提交的核心特征是拥有多个父提交(普通提交仅含1个父提交),我们可以通过判断提交的父提交数量来识别合并提交,进而跳过Workflow执行。

修改后的完整Workflow代码:

on:
  push:
    branches:
      - test

jobs:
  do_not_run_on_merged:
    # 仅当提交为非合并提交时执行(父提交数量等于1)
    if: ${{ github.event.head_commit.parent_ids | length == 1 }}
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo This is not a merge

额外说明

  • 该方法不仅能识别PR合并的提交,还会跳过所有通过命令行git merge生成的合并提交,完全匹配需求。
  • 若尝试通过提交信息(如包含Merge pull request #)判断,可靠性较低,因为提交信息可被自定义修改。

内容的提问来源于stack exchange,提问作者lonelearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 06:04:51