如何通过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
相关产品推荐
相关产品推荐

