当我使用 p4 (Perforce) 时,我经常使用“...”模式,它有点像“*”,除了它遍历文件系统层次结构的级别(即:它也匹配斜线)。这对于处理目录树下几层的源文件很方便。
例如:
p4 diff foo/.../*.py
这将“p4 diff”子树“foo”下的所有 Python 文件。
有没有一种简单的方法可以用 git 得到相同的结果?现在我必须做这样的事情:
git diff $(find foo -name '*.py')
这几乎没有那么方便。
最佳答案
git 通常依赖于 shell 提供的路径名扩展功能——这是理所当然的,因为路径名扩展并不完全是版本控制系统的工作。因此,您应该查看您选择的 shell,看看它是否支持类似 ...
路径名扩展的东西。如果您使用的是 bash,则可以设置 globstar
选项
shopt -s globstar
然后你可以使用双星号来得到你想要的扩展:
git diff foo/**/*.py
请注意,根据我的测试,双星号似乎与部分路径名组件不匹配。换句话说,它的后面和前面必须有一个斜线,该模式才能匹配 foo/bar/blah/baz.py
之类的内容。如果您尝试编写 foo/ba**/*.py
,它将匹配与 foo/ba*/*.py
相同的内容。
关于git - git 等同于 p 4's "...”模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8087510/