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

GitHub Actions PowerShell工作流:获取最新提交的新增/修改文件

解决GitHub Actions中Git仅返回新增/修改文件的方案

在你的PowerShell工作流中,要精准获取upload_REMOTEHOST目录下本次push的新增/修改文件(排除删除文件),可以用以下Git命令:

git diff --name-only --diff-filter=AM "${{ github.event.before }}" "${{ github.sha }}" -- upload_REMOTEHOST/

参数说明

  • --name-only:仅输出变更文件的路径,不显示具体差异内容
  • --diff-filter=AM:只保留**新增(Added)和修改(Modified)**的文件,自动排除删除(Deleted)的文件
  • ${{ github.event.before }} 和 ${{ github.sha }}:利用GitHub Actions内置环境变量,对比推送前的旧提交哈希和推送后的新提交哈希,确保只获取本次push的变更
  • -- upload_REMOTEHOST/:限定仅扫描该目录下的文件,彻底过滤无关目录的变更

工作流中使用示例

如果需要遍历这些文件做后续处理,PowerShell代码可以这么写:

# 获取符合条件的变更文件列表
$targetFiles = git diff --name-only --diff-filter=AM "${{ github.event.before }}" "${{ github.sha }}" -- upload_REMOTEHOST/

# 遍历处理每个文件
foreach ($file in $targetFiles) {
    Write-Host "当前处理文件: $file"
    # 这里添加你的文件处理逻辑,比如上传到远程主机等
}

为什么之前会返回无关文件?

大概率是因为你之前的命令没有限定目录范围,或者没有通过--diff-filter过滤删除文件,也可能是对比的提交范围不正确(比如没有精准对比本次push的前后提交)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:04:52