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
相关产品推荐
相关产品推荐

