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

如何在GitHub Actions中仅获取当前工作分支的文件夹名称?

问题原因

使用actions/checkout@v3配合fetch-depth: 2时,若工作流由PR触发,默认会自动将base分支(如main/master)合并到当前分支的HEAD上,导致git ls-tree读取的是合并后的提交树,自然包含base分支的目录。另外,若当前分支是刚从base分支创建的新分支,fetch-depth: 2拉取的内容和base分支完全一致,也会出现该问题。

解决方法

1. 拉取当前分支完整内容(通用场景)

修改checkout步骤,明确拉取当前分支并获取完整历史:

- uses: actions/checkout@v3
  with:
    fetch-depth: 0  # 拉取完整仓库历史
    ref: ${{ github.head_ref }}  # 指定拉取触发工作流的当前分支
  • fetch-depth: 0:确保拉取所有分支和提交历史,避免内容缺失
  • ref: ${{ github.head_ref }}:强制拉取触发工作流的分支,而非合并后的分支

2. 浅克隆且避免合并(PR场景)

若不想拉取完整历史,添加禁止自动合并的核心配置:

- uses: actions/checkout@v3
  with:
    fetch-depth: 2
    ref: ${{ github.head_ref }}
    merge: false  # 关闭PR自动合并base分支的操作
  • merge: false:关键配置,阻止PR场景下的自动合并,让HEAD指向当前分支的最新提交

验证操作

可添加步骤确认当前分支状态,确保配置生效:

- name: 确认当前分支信息
  run: |
    git branch --show-current
    git log --oneline -n 2

修改后执行git ls-tree -d --name-only HEAD,即可得到当前分支下的所有目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:00:07