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, который add
s их всех.
.
- это сам текущий каталог, и git add
ing он добавит его и все файлы под ним.
через точку .
в оболочке обычно означает "текущий каталог".
при использовании звездочки *
на оболочке функция называется 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 будет расширяться до текущего каталога, тогда как триггеры действуют и такие распространяется на все файлы и каталоги, которые не начинаются с точки.