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

如何通过GitHub Actions获取分支所有提交中的全部变更文件名?

解决方法

问题出在tj-actions/changed-files的默认对比范围上:

  • 当你在分支上多次push时,该Action默认只会对比当前提交与上一个提交的差异,所以只会返回你最近修改的工作流文件。
  • 而你首次提交的new-directory下的文件,属于分支相对于主分支的历史变更,不在默认的对比范围内。

你只需要在changed-files的配置中明确指定基准分支(比如你的主分支是main),让Action对比当前分支与主分支的所有差异即可:

steps:
  - uses: actions/checkout@v3
    with:
        fetch-depth: 0

  - name: Get Changed Directories
    id: changed-directories
    uses: tj-actions/changed-files@v35
    with:
        fetch_depth: 0
        base: main  # 替换成你的主分支名称,比如master

  - name: List all changed files
    run: |
      for file in ${{ steps.changed-directories.outputs.all_changed_and_modified_files }}; do
        echo $file
      done

这样配置后,Action会拉取所有分支历史,对比当前分支与主分支的全部差异,就能把new-directory/files/addedfile1、new-directory/files/addedfile2这些首次提交的文件也包含在结果里。

如果你的场景不是对比主分支,而是要获取当前分支所有提交中变更的文件,可以改用指定具体的起始提交哈希作为base,比如base: <首次提交的哈希值>。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:45:24