我正在尝试在两个分支之间获取新的/更改的PowerShell文件。来自主请求和我正在Azure DevOps管道中执行的请求,其中包含:
$changedFiles = (git diff --cached --name-only | Where-Object { $_ -like "*.ps1" })
然而,当命令在本地工作时,我没有得到任何消息。我认为它需要更改管道中的位置,但我在尝试定位一些存储库文件后找不到它。它应该在执行之前下载文件吗?更多代码片段:
预调试.ps1
Get-Location # returns D:a1s
Get-ChildItem # returns nothing
gci -recurse -filter "test.ps1" # returns nothing
$changedFiles = (git diff --cached --name-only | Where-Object { $_ -like "*.ps1" })
$exitCode = 0
$changedFiles # returns none
if ($changedFiles.length -eq 0) {
exit $exitCode
}
else{
...
}
天青-哌啶.yml
trigger:
- main
jobs:
- job: RunScript
pool:
vmImage: windows-2019
steps:
- powershell:
.pre-commit.ps1
更新:
$files = (git diff --name-only HEAD HEAD~1 | Where-Object {$_ -match 'w*.ps[m]?1' })
git diff --cached
将只显示索引(使用git add
暂存的文件(和当前提交之间的差异
虽然它可能会在工作副本中显示修改(在工作计算机上,您可能处于在提交文件之前已修改并暂存文件的状态(,但它通常不会在CI管道中运行的副本中工作(例如,CI管道中的操作通常不涉及修改代码文件和运行git add
(。
如果您想列出在提交eacf11
和eacf22
之间修改的文件,请删除--cached
选项并简单地运行:
git diff --name-only eacf11 eacf22
您也可以通过标记名称或分支名称引用提交,也可以使用HEAD
来表示"提交";当前提交":
git diff --name-only master HEAD
git diff --name-only v1.2.1 eacf22