什么是相当于p4的“......”模式的git?

时间:2011-11-10 22:52:31

标签: git

当我使用p4(Perforce)时,我会经常使用“...”模式,它有点像“*”,除了它遍历文件系统层次结构的级别(即:它也匹配斜杠)。这对于处理目录树中几个级别的源文件很方便。

例如:

p4 diff foo/.../*.py

这将“p4 diff”子树“foo”下的所有Python文件。

有没有一种简单的方法可以用git获得相同的结果?现在我必须做这样的事情:

git diff $(find foo -name '*.py')

这不太方便。

1 个答案:

答案 0 :(得分:4)

git通常依赖于shell提供的路径名扩展功能 - 这是正确的,因为路径名扩展并不完全是版本控制系统的工作。因此,您应该查看自己选择的shell,看看它是否支持类似...路径名扩展的内容。如果您使用的是bash,则可以设置globstar选项

shopt -s globstar

然后您可以使用双星号来获得所需的扩展:

git diff foo/**/*.py

请注意,根据我的测试,双星号似乎与部分路径名组件不匹配。换句话说,它必须在该模式的斜杠之后并且之后加上匹配foo/bar/blah/baz.py之类的斜杠。如果您尝试撰写foo/ba**/*.py,它将与foo/ba*/*.py匹配相同的内容。