如何在Shell脚本中获取git diff命令的输出?

问题描述 投票:1回答:1

我想用同一个文件在两个分支中执行Git diff。我想得到两个文件的差异。

  • 如果出现一个致命的错误
  • 如果有差异不匹配
  • 如果没有匹配的差异

我试着将命令保存在一个变量中以得到结果。例子:GIT_DIFF=$(git diff RB_202005:test.txt RB_202006:test.txt) GIT_DIFF=$(git diff RB_202005:test.txt RB_202006:test.txt),然后打印变量(例:echo $GIT_DIFF),但没有任何结果。

bash git
1个回答
4
投票

由于您只对 "无差异"、"差异"、"错误 "等情况感兴趣,我将运行

git diff --exit-code --quiet .....

--exit-code 的方式设置退出代码。diff 就可以了。

--quiet 抑制输出。

如果退出代码为0,则没有差异。

如果退出代码为1,则有差异。

如果退出代码为2或128,则出现致命错误。

已更新 正如上级在评论中指出的: git-diff --exit-code 如果要比较的文件不存在,会产生状态码128。根据手册,它产生的退出代码应该和标准的 diff,即为2。因此,最好将大于1的退出码作为标准误差。这也将抓住以下情况 git 本身没有找到(在这种情况下,shell可能会报告退出代码127)。

© www.soinside.com 2019 - 2024. All rights reserved.