[英]Why does a git pathspec starting with a wildcard * not match in subdirectories?
TL; DR:
pathspec
*.txt
匹配子目錄,但是'*.txt'
匹配? 假設我有一個帶有文件樹的git repo,如下所示:
file.txt
dir/file.txt
這兩個文件都包含一個字符a
。 如果我想為該a
git grep
,但我將搜索范圍限制為.txt
擴展名,我會嘗試
git grep a -- *.txt
但是,這僅返回file.txt
的匹配項,而不返回dir/file.txt
的匹配項。
在git中, --
之后的所有內容都是pathspec
,可以在gitglossary(7)
( man 7 gitglossary
)中進行閱讀。 那里的描述有點冗長,我不清楚,但是從這句話中我可以理解以下內容:
[...]特別是*和? 可以匹配目錄分隔符。
我知道*
應該匹配dir/file
,但是顯然不匹配。
相反,如果我這樣做
git grep a -- '*.txt'
我確實得到了預期的結果。
在第一行:
git grep a -- *.txt
* .txt由當前shell解釋
而在 :
git grep a -- '*.txt'
它被傳遞給git,並由git使用定義的行為
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.