通过文件扩展名显示两个Git分支之间的差异

时间:2017-03-27 02:35:49

标签: git grep git-bash

如何列出两个git分支之间的差异,但只显示那些具有特定文件扩展名的文件?

我发现以下内容为我提供了两个分支之间的所有不同文件: -

git diff -r --name-only --no-commit-id branch1 branch2

然而,我已经尝试将其输入grep并搜索只是' yml'文件....我一无所获。

(git diff -r --name-only --no-commit-id branch1 branch2) | grep "*.yml"

我可以在第一个命令中看到yml文件输出,但在第二个命令中没有输出。

  • 我不应该使用grep吗?
  • 我的grep命令缺少什么吗?
  • 或者有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

你可以为git diff附加一个类似shell的模式。

git diff -r --name-only --no-commit-id branch1 branch2 "*.yml"

正如@larsks所说,grep接受正则表达式,这与shell通配符不同。

答案 1 :(得分:1)

*.yml不是有效的正则表达式。

*表示“前面的字符,零次或多次”,因此它作为正则表达式的前导字符没有意义。如果您要查找以.yml结尾的所有文件,只需... | grep '\.yml$'。我们正在逃避.,因为.表示“任何字符”,$表示“行尾”(因此明确 匹配a名为的文件,例如foo.yml.j2)。

答案 2 :(得分:0)

*接受正则表达式,其中.git diff -r --name-only --no-commit-id branch1 branch2 -- "*.yml" 具有完全不同的含义。

是的,你不必使用grep:

SELECT t.ID, t.itemcode, t.qty, t.expdate, t.total
FROM
(
    SELECT t1.ID,
           t1.itemcode,
           t1.qty,
           t1.expdate,
           (SELECT SUM(t2.qty) FROM put_in t2
            WHERE t2.expdate <= t1.expdate AND t2.itemcode = 'RM1181') AS total
    FROM put_in t1
    WHERE t1.itemcode = 'RM1181'
) t
WHERE t.total - t.qty < 500 AND
      t.itemcode = 'RM1181'
ORDER BY t.expdate;