簡體   English   中英

為什么以通配符*開頭的git pathspec在子目錄中不匹配?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM