2017-03-05 77 views
0

我明白$ git add .添加所有修改,在當前目錄中新(未跟蹤)文件和所有子目錄到臨時區域,但我在此命令中使用c的困惑。git add * .c命令做什麼?

.c只是C源文件的擴展名?

+2

如果你運行'回聲* .c'你會看到什麼的* .c擴展到您的目錄中。 – nos

+2

正如@nos所暗示的,它實際上是* shell *(命令行解釋器),它在這裏展開'*'。這被稱爲「globbing」。其結果是shell運行'git add a.c b.c c.c'或任何匹配'* .c'的配置。它適用於所有命令,而不僅僅是Git。 Git也有自己的內置通配符,所以如果你保護shell的'git add'* .c'',它仍然可以工作 - 但'echo'不會,所以'echo'* .c ''只是打印'* .c'「(關於這個主題的更多信息,請參閱http://stackoverflow.com/documentation/bash/3795/pattern-matching-and-regular-expressions#t=20170305131800301894) – torek

+1

這是水珠,https://en.m.wikipedia.org/wiki/Glob_(programming) – ElpieKay

回答

1

是的,你理解正確的話。
它會將所有*.c文件添加到您的索引。

這是執行的git的添加*.c

enter image description here

1

git add .階段在當前目錄和所有子目錄中的所有修改或未經跟蹤文件的結果。

git add *.c添加的所有文件與.c擴展。 *被稱爲「明星通配符」,它匹配任何字符。例如。如果你想添加任何擴展名爲.c的文件,你可以用git add *.c*來實現。

+2

IMO值得一提的是,這是擴大'* .c'外殼,因此這只是'.c'文件在當前目錄_中,而不是任何'.c'文件,這些文件可能用於添加整個repo(與git add。相反,它會遍歷目錄查找內容)。 –