git是否支持路径中的通配符?

Nat*_*iel 31 git msysgit

我查看,搜索和阅读文档,但无法真正找到任何相关信息.

基本上,我希望能够做到这一点:

git reset -- *.exe
Run Code Online (Sandbox Code Playgroud)

要么

git reset -- */some_executable.exe
Run Code Online (Sandbox Code Playgroud)

而不是这个:

git reset -- some/very/long/path/some_executable.exe
Run Code Online (Sandbox Code Playgroud)

能够做到这一点也很高兴:

git reset -- topleveldirectory/another/subdirectory/*
Run Code Online (Sandbox Code Playgroud)

而不是这个:

git reset -- topleveldirectory/another/subdirectory/SomeFile.cpp
git reset -- topleveldirectory/another/subdirectory/SomFile.h
Run Code Online (Sandbox Code Playgroud)

我可以*在git-add中使用通配符来添加文件,但是在上面的例子中找不到任何有用的东西.

有什么建议或指示我可以在哪里寻找更多信息?

在64位Windows 7上使用:git版本1.7.3.1.msysgit.0

Mat*_*ght 18

Git确实支持一些pathspec globbing,但你需要小心shell-escape字符,以便它们不会被你的情况解释,msys bash,它不支持更复杂的通配符扩展.

编辑:此外,对于您的重置示例,您可以将目录作为参数传递给git reset,git将以递归方式运行.

git reset my/long/path
Run Code Online (Sandbox Code Playgroud)

而不是

git reset my/long/path/*
Run Code Online (Sandbox Code Playgroud)

  • 嘿,这根本不起作用!我有很多java文件和运行git log --all - '\*.java'什么都没有.找 .-name'\*.java'输出吨. (2认同)

Dhr*_*gar 8

但是,在某些情况下,确实需要以特定方式使用通配符来定位文件的特定子集,而不仅仅是所有文件,尤其是在使用时git rm,git checkout或者git reset.只需转义外卡字符即可实现相同功能.

git rm app/assets/javascript/templates/projects/\*.jst.ejs
Run Code Online (Sandbox Code Playgroud)


Lar*_*sen 8

要从git文件夹中递归重置所有exe文件,您可以执行以下操作:

git reset -- \*.exe
Run Code Online (Sandbox Code Playgroud)

或者,如果您想在特定子文件夹中添加所有java文件,您也可以这样做:

git add ./some/sub/folder/path/**/*.java
Run Code Online (Sandbox Code Playgroud)

其中**表示路径中此点的递归方式的所有文件夹