git add * (звездочка) vs git add. (период)
я новичок в git, и у меня есть вопрос о добавлении файлов в git. Я нашел несколько вопросов stackoverflow о разнице между git add . и git add -a, git add --all, git add -A, etc. Но я не смог найти место, которое объясняет, что такое git add * делает. Я даже посмотрел на git добавить man page, но это не помогло. Я использовал его вместо git add . и мой коллега спросил меня, почему. У меня не было ответа. Я просто всегда использовал git add *.
Are git add . и git add * то же самое? Добавляет Ли один измененные файлы только из текущего каталога, а другой добавляет файлы из текущего каталога и подкаталогов (рекурсивно)?
на одном из других вопросов стека есть отличная диаграмма, которая показывает разницу между git add -A git add . и git add -u, но у него нет git add *.

примечание: Я понимаю, что значит использовать звездочку подстановочный знак (добавить все файлы с заданным расширением). Например, git add *.html добавить все файлы
4 ответов
add * означает добавление всех файлов в текущий каталог, за исключением файлов, имя которых начинается с точки. Это ваша функциональность оболочки, и Git получает только список файлов.
add . не имеет особого значения в вашей оболочки, и, таким образом, git добавляет весь каталог рекурсивно, что почти то же самое, но включая файлы, имена которых начинаются с точки.
* не является частью git - это подстановочный знак, интерпретируемый оболочкой. * расширяется до всех файлов в текущем каталоге и только затем передается в git, который adds их всех.
. - это сам текущий каталог, и git adding он добавит его и все файлы под ним.
через точку . в оболочке обычно означает "текущий каталог".
при использовании звездочки * на оболочке функция называется file-globbing используется. Е. Г. на баш функцию glob() делает именно это. The manpage for glob (man 7 glob) гласит:
описание
Long ago, in UNIX V6, there was a program /etc/glob that would expand wildcard patterns. Soon afterward this became a shell built-in. These days there is also a library routine glob(3) that will perform this function for a user program.шаблоны
A string is a wildcard pattern if it contains one of the characters '?', '*' or '['.подстановка
Globbing is the operation that expands a wildcard pattern into the list of pathnames matching the pattern.
это означает, что при передаче аргументов любой программе в командной строке, содержащей '?', '*'или '[', сначала globbing расширяет шаблон подстановочного знака в список файлов, а затем дает эти файлы в качестве аргумента для самой программы.
разница в значении между 'git add .' и 'git add *'четко указано Денис:
git add ожидает добавления списка файлов. В приведенном выше примере Shell расширяет * или . соответственно и дает результат в качестве параметра для git add. Теперь разница в том, что с git add . git будет расширяться до текущего каталога, тогда как триггеры действуют и такие распространяется на все файлы и каталоги, которые не начинаются с точки.
