两者似乎都将所有内容添加到当前目录中。 Git add documentation指向pathspec,后者指向fnmatch(3)。
文档建议git add .
将在当前目录中添加所有内容,而git add *
将添加与*
相匹配的所有内容,而该内容恰好是当前目录中的所有内容。那么这应该导致相同的结果吧?也许git add .
的性能更高,因为我们不必先扩展全局范围?
答案 0 :(得分:1)
这将导致相同的结果正确吗?
不完全
由于*
与外壳程序中的隐藏文件不匹配,因此git add *
不会在当前目录中添加隐藏文件/目录(但子目录中的隐藏文件将匹配,因为您添加了完整目录)
git add .
将添加所有内容,包括当前目录中的隐藏文件。
简单的POC来说明:
$ tree -a
.
├── blah
├── .hidden
└── some
├── dir
│ ├── .hidden
│ └── titi
├── .hidden
└── tata
2 directories, 6 files
$ git init
Initialized empty Git repository in /mydir/.git/
$ git add *
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: blah
new file: some/.hidden
new file: some/dir/.hidden
new file: some/dir/titi
new file: some/tata
Untracked files:
(use "git add <file>..." to include in what will be committed)
.hidden
$ git add .
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .hidden
new file: blah
new file: some/.hidden
new file: some/dir/.hidden
new file: some/dir/titi
new file: some/tata