脚本

时间:2015-07-24 16:58:56

标签: git git-diff

我正在尝试编写一个脚本,该脚本为提交日志消息提供正则表达式,然后在所有提交中显示git diff。我的脚本中有以下内容:

#!/bin/sh
ARGV=("$@")
dir=$(pwd)
commits=($(git --work-tree ${dir} log --grep ${ARGV[0]} | grep -o 'commit .*$' | cut -f2 -d' '))
echo $(git --work-tree ${dir} log --grep ${ARGV[0]})
for i in ${commits[@]}
do
    echo "command: git diff ${i}"
    echo $(git diff ${i})
 done 

当我运行/path/to/script.sh <some-regex>时,我得到以下输出:

  

命令:git diff 806e5e76c0b20eabda3a14b1442168149ad30155

     

致命:含糊不清的论点&#39; 806e5e76c0b20eabda3a14b1442168149ad30155&#39;:未知的修订版或路径不在工作树中。   使用&#39; - &#39;将路径与修订分开,如下所示:   &#39; git [...] - [...]&#39;

然而,当我运行输出的实际命令时,一切正常。有什么想法吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

  

一个脚本,它接受提交日志消息的正则表达式   在所有提交中显示git diff

这不是吗?

git log --patch --grep=<pattern>

explainshell.com - git log --patch --grep