git diff比较仓库外文件时退出码不符合预期的问题咨询
Git Diff 比较仓库外文件的退出码问题
问题
- 能否使用
git diff比较代码仓库外的两个文件? - 如果可以,为何当文件存在差异时,程序的退出码仍为0(而非预期的1)?我忽略了什么?
cmd.exe 测试结果
9:43:55.45 2023-08-04 C:\src\t\scripts>TYPE .\t1.txt this is t1.txt 9:43:57.92 2023-08-04 C:\src\t\scripts>TYPE .\t2.txt this is t2.txt 9:43:57.94 2023-08-04 C:\src\t\scripts>"C:\Program Files\Git\cmd\git.exe" diff --exit-code --no-index --ignore-all-space --shortstat .\t1.txt .\t1.txt 9:43:58.04 2023-08-04 C:\src\t\scripts>ECHO %ERRORLEVEL% 0 9:43:58.04 2023-08-04 C:\src\t\scripts>"C:\Program Files\Git\cmd\git.exe" diff --exit-code --no-index --ignore-all-space --shortstat .\t1.txt .\t2.txt 1 file changed, 1 insertion(+), 1 deletion(-) 9:43:58.14 2023-08-04 C:\src\t\scripts>ECHO %ERRORLEVEL% 0
PowerShell 7.3.6 测试结果
PS C:\src\t\scripts> Get-Content -Path .\t1.txt this is t1.txt PS C:\src\t\scripts> Get-Content -Path .\t2.txt this is t2.txt PS C:\src\t\scripts> & 'C:\Program Files\Git\cmd\git.exe' diff --exit-code --no-index --ignore-all-space --shortstat .\t1.txt .\t1.txt PS C:\src\t\scripts> $LASTEXITCODE 0 PS C:\src\t\scripts> & 'C:\Program Files\Git\cmd\git.exe' diff --exit-code --no-index --ignore-all-space --shortstat .\t1.txt .\t2.txt 1 file changed, 1 insertion(+), 1 deletion(-) PS C:\src\t\scripts> $LASTEXITCODE 0 PS C:\src\t\scripts> & 'C:\Program Files\Git\cmd\git.exe' diff --exit-code --no-index --ignore-all-space --shortstat .\t1.txt .\t1.txt PS C:\src\t\scripts> $? True PS C:\src\t\scripts> & 'C:\Program Files\Git\cmd\git.exe' diff --exit-code --no-index --ignore-all-space --shortstat .\t1.txt .\t2.txt 1 file changed, 1 insertion(+), 1 deletion(-) PS C:\src\t\scripts> $? True
使用的 Git 版本
PS C:\src\t\scripts> git --version git version 2.39.2.windows.1
Git Diff 官方文档说明
--exit-code
Make the program exit with codes similar to diff(1). That is,
it exits with 1 if there were differences and 0 means no differences.
验证 Git 可返回非零退出码
cmd.exe 测试
9:54:45.54 2023-08-04 C:\src\t\scripts>TYPE testgit.bat @"C:\Program Files\Git\cmd\git.exe" >NUL @ECHO %ERRORLEVEL% 9:54:56.14 2023-08-04 C:\src\t\scripts>CALL testgit.bat 1 9:54:58.82 2023-08-04 C:\src\t\scripts>testgit.bat 1
PowerShell 测试
PS C:\src\t\scripts> Get-Content -Path .\testgit.ps1 & 'C:\Program Files\Git\cmd\git.exe' | Out-Null $LASTEXITCODE & 'C:\Program Files\Git\cmd\git.exe' | Out-Null $? PS C:\src\t\scripts> .\testgit.ps1 1 False
系统 Git 实例唯一性验证
PS C:\> Get-Command git -All CommandType Name Version Source ----------- ---- ------- ------ Application git.exe 2.39.2.1 C:\Program Files\Git\cmd\git.exe
内容的提问来源于stack exchange,提问作者lit
相关产品推荐
相关产品推荐

