在合并推送GitHub操作工作流中确定源分支名称

在合并推送GitHub操作工作流中确定源分支名称,git,github,github-actions,Git,Github,Github Actions,我有一个GitHub操作工作流,我正在将各种不同的源分支合并到目标分支main中 以下是读取环境变量值的测试工作流: name: Print Github Env Variables on: push: branches: - main - test pull_request: branches: - main - test workflow_dispatch: jobs: print-env-variabes:

我有一个GitHub操作工作流,我正在将各种不同的源分支合并到目标分支main中

以下是读取环境变量值的测试工作流:

name: Print Github Env Variables
on:
  push:
    branches:
      - main
      - test
  pull_request:
    branches:
      - main
      - test
  workflow_dispatch:
jobs:
  print-env-variabes:
    name: Print Github Variables
    runs-on: ubuntu-latest
    steps:
      - name: Print Github Variables
        run: |
          echo "GITHUB_WORKFLOW:$GITHUB_WORKFLOW"
          echo "GITHUB_EVENT_NAME:$GITHUB_EVENT_NAME"
          echo "GITHUB_EVENT_PATH:$GITHUB_EVENT_PATH"
          echo "GITHUB_WORKSPACE:$GITHUB_WORKSPACE"
          echo "GITHUB_SHA:$GITHUB_SHA"
          echo "GITHUB_REF:$GITHUB_REF"
          echo "GITHUB_HEAD_REF:$GITHUB_HEAD_REF"
      - name: Print complete webhook event payload
        run: cat $GITHUB_EVENT_PATH
在名为test的分支中创建test.txt文件,创建一个pull请求,然后合并到main中。那时你会看到我所看到的

当我查看GITHUB\u REF时,它包含主分支

对于pull请求,GITHUB\u HEAD\u REF包含“test”,但对于push,它是空的。我需要文件合并时的值,以便在发生推送时使用

测试工作流还打印出整个事件json对象,在push事件中,我也没有看到任何带有分支“test”的条目


如何在推送事件期间获取源分支的名称?

这是否回答了您的问题?您可以使用
HEAD^1
HEAD^2
获取通勤的地址。感谢@lucas的链接,但我想要的是源分支名称,而不是目标分支名称。Push没有源分支名称。他们只有一个提交散列ID。@Valentingev:没错,但与这个问题无关。远程跟踪名称在由
git fetch
创建之后就存在于您自己的存储库中,问题是关于
git push
和github“操作”(这些“操作”由github定义,而不是由git定义)。如果运行操作的存储库具有远程跟踪名称,则其中一些可能包含SHA,但一些可能不包含,并且包含该名称的集合可能不是正确的集合,或者可能有太多的名称而无法使用。