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

能否在GitHub Action工作流中检测git push --force强制推送操作?

GitHub Action识别强制推送实现方案

结论

该需求可以直接实现,不需要额外引入第三方工具。

实现方法

方法1:直接读取事件内置字段

GitHub push事件的webhook payload原生携带forced布尔字段,你可以直接在工作流中通过${{ github.event.forced }}读取:

  • 字段值为true:当前为git push -f/git push --force强制推送
  • 字段值为false:当前为普通git push操作
    示例工作流配置:
name: 强制推送识别示例
on: [push]

jobs:
  check-push-type:
    runs-on: ubuntu-latest
    steps:
      - name: 触发强制推送专属逻辑
        if: github.event.forced == true
        run: echo "检测到强制推送,执行对应处理逻辑"

      - name: 触发普通推送专属逻辑
        if: github.event.forced == false
        run: echo "检测到普通推送,执行对应处理逻辑"

方法2:git提交链校验(兜底方案)

如果需要自行校验推送类型避免特殊场景误差,可以通过git命令判断旧提交是否在新提交的祖先链上:

git merge-base --is-ancestor ${{ github.event.before }} ${{ github.event.after }}

如果该命令返回值不为0,说明旧HEAD不在新提交的提交链中,属于强制推送场景。

注意事项

  • 新建分支、删除分支、标签推送场景下github.event.forced固定为false,你可以通过github.event.created == false和github.event.deleted == false过滤这类场景后再做判断。
  • 仓库开启强制推送签名、分支保护规则等配置不会影响以上判断逻辑的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:06