git add * (asterisk) vs git add . (period)
I'm new to git and I have a question about adding files in git. I have found multiple stackoverflow questions about the difference between git add . and git add -a , git add --all , git add -A , etc. But I've been unable to find a place that explains what git add * does. I've even looked at the git add man page, but it didn't help. I've been using it in place of git add . and my co-worker asked me why. I didn't have an answer. I've just always used git add * .
Are git add . and git add * the same? Does one add changed files from the current directory only, while the other adds files from the current directory and subdirectories (recursively)?
There's a great chart listed on one of the other stack questions that shows the difference between git add -A git add . and git add -u , but it doesn't have git add * .

Note: I understand what it means to use the asterisk as a wildcard (add all files with a given extension). For example, git add *.html would add all files that have a .html extension (but ignore .css , .js , etc).
Thanks for the help!
add * means add all files in the current directory, except for files, whose name begin with a dot. This is your shell functionality and Git only ever receives a list of files.
add . has no special meaning in your shell, and thus Git adds the entire directory recursively, which is almost the same, but including files whose names begin with a dot.
* is not part of git - it's a wildcard interpreted by the shell. * expands to all the files in the current directory, and is only then passed to git, which add s them all. . is the current directory itself, and git add ing it will add it and the all the files under it.
Using the dot . in the shell usually means "the current directory".
When you use the asterisk * on a shell a feature called file-globbing is utilized. Eg on bash the function glob() is doing just that. The manpage for glob ( man 7 glob ) states:
DESCRIPTION
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.
Wildcard matching
A string is a wildcard pattern if it contains one of the characters '?', '*' or '['.
Globbing
Globbing is the operation that expands a wildcard pattern
into the list of pathnames matching the pattern.
That means when you pass arguments to any program on the commandline that contain '?' , '*' or '[' , first globbing expands the wildcard pattern into a list of files and then gives these files as an argument to the program itself.
The difference in meaning between 'git add .' and 'git add *' is clearly described by Denis:
git add expects a list of files to be added. In the above example the shell expands * or . respectively and gives the result as a parameter to git add. Now the difference is that with git add . git will expand to the current directory whereas git add * triggers file globbing and such expands to all files and directories that do not start with a dot.
