Will git add . and git add * accomplish exactly the same things?
No it will not.
* is a glob pattern, and will not match files which begin with a .
For example, let this be the current directory and I have 2 new files to add foo and .bar
$ ls -l
-rw-r--r-- 1 me users 0 Mar 7 19:31 foo
-rw-r--r-- 1 me users 0 Mar 7 19:31 .bar
When I run git add *:
$ git add *
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: foo
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .bar
Instead if I run git add .
$ git add .
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: .bar
# new file: foo
#
BTW using git add * .* would produce incorrect results, if you want to add only all the files under a particular directory you're in.
Let us consider this case, I've 6 new files:
foo
.bar
mydir/abc
mydir/.def
mydir2/newfile1
mydir2/newfile2
If I'm in mydir and run git add . git adds only the following files:
mydir/abc
mydir/.def
Instead if you run the command git add * .*, git adds the files in mydir in addition to any changes present one directory level above since .* glob pattern also matches ../. In other words, the following files will be added:
foo
.bar
mydir/abc
mydir/.def
mydir2/newfile1
mydir2/newfile2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With