如何在GitHub Actions中获取main分支的短Git SHA值?
在GitHub Actions中获取main分支最新短Git SHA的方法
你可以通过两种可靠的方法获取main分支的最新短SHA,避开触发分支的提交值:
方法一:使用Git命令(需完整拉取仓库)
默认GitHub Actions仅拉取触发分支的最新提交,因此需要先拉取完整仓库历史并获取远程main分支的SHA:
- 配置checkout步骤时设置
fetch-depth: 0,拉取完整仓库所有分支的历史 - 拉取远程main分支的最新更新
- 提取main分支的短SHA
完整工作流示例:
name: Fetch Main Branch Short SHA on: [push, pull_request] jobs: retrieve-sha: runs-on: ubuntu-latest steps: - name: Checkout full repository uses: actions/checkout@v4 with: fetch-depth: 0 # 拉取完整仓库历史,包含所有分支 - name: Fetch latest main branch run: git fetch origin main - name: Capture main branch short SHA id: get-sha run: echo "short_sha=$(git rev-parse --short origin/main)" >> $GITHUB_OUTPUT - name: Output result run: echo "Main branch latest short SHA: ${{ steps.get-sha.outputs.short_sha }}"
关键说明:
fetch-depth: 0是必要的,否则无法获取main分支的历史信息git rev-parse --short origin/main直接读取远程main分支的最新短SHA,无需切换分支
方法二:使用GitHub API(无需完整拉取仓库)
如果仓库体积较大,不想拉取完整历史,可以调用GitHub REST API获取main分支的最新提交SHA,再截取前7位作为短SHA:
name: Get Main SHA via API on: [push, pull_request] jobs: get-sha-api: runs-on: ubuntu-latest steps: - name: Fetch main branch SHA via API id: get-sha run: | # 调用API获取main分支信息 branch_data=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ "https://api.github.com/repos/${{ github.repository }}/branches/main") # 提取完整SHA并截取前7位 full_sha=$(echo "$branch_data" | jq -r '.commit.sha') short_sha=${full_sha:0:7} echo "short_sha=$short_sha" >> $GITHUB_OUTPUT - name: Print short SHA run: echo "Main branch latest short SHA: ${{ steps.get-sha.outputs.short_sha }}"
关键说明:
${{ secrets.GITHUB_TOKEN }}是GitHub自动提供的令牌,拥有仓库的只读权限jq工具用于解析JSON响应,Ubuntu环境默认已预装,其他环境可能需要额外安装
内容的提问来源于stack exchange,提问作者Aviral Srivastava
相关产品推荐
相关产品推荐

