git add *.c
應該只從當前目錄添加匹配文件,而不是從其子目錄中添加匹配文件。我注意到如果沒有文件與當前目錄中搜索到的模式匹配,git add *.c
正在從子目錄添加匹配的文件。git add - 避免在當前目錄中沒有模式匹配時使用通配符添加子目錄中的文件
有誰知道如何避免這種行爲?
git add *.c
應該只從當前目錄添加匹配文件,而不是從其子目錄中添加匹配文件。我注意到如果沒有文件與當前目錄中搜索到的模式匹配,git add *.c
正在從子目錄添加匹配的文件。git add - 避免在當前目錄中沒有模式匹配時使用通配符添加子目錄中的文件
有誰知道如何避免這種行爲?
git add "/*.c"
應該訣竅。
前導斜槓告訴Git僅查看當前文件夾。
請注意,你應該總是引用這個,或者shell可能會在Git看到它之前嘗試擴展glob模式,這會導致各種片狀行爲。
當git處理通配符時,它應該與任何級別的文件匹配。您看到此行爲的原因是因爲如果通配符在當前目錄中匹配,shell將*.c
擴展爲明確的文件列表。在這種情況下,Git可以看到並顯式列出.c
文件,而不是通配符。
如果shell無法擴展*.c
,因爲當前目錄中沒有文件匹配該模式,那麼通配符模式會被傳遞到未執行擴展的Git,並自動執行擴展並匹配子目錄。
如果使用bash,則可以使用shopt -s nullglob
使shell將通配符擴展爲空,或者shopt -s failglob
產生錯誤,如果模式不匹配,則不運行git add
。