Git 动物们 有一系列的命令:
git init
git add *
git commit -a -m ‘initial commit and release!’
git add *
和git add .
有什么不同(通常我使用后者),它们是相同的吗?
git add *
将添加所有由*
的shell扩展得出的路径,而git add .
会告诉 git 添加当前目录。
git add *
不会添加以.
开头的路径,因为*
的shell扩展将这些路径视为“隐藏”路径。
git add *
还将失败,如果任何扩展的路径当前被git忽略了,因为如果你明确指定一个被忽略的路径而不传递-f
(强制)标志来显示你确实想要添加一个被忽略的路径,git会认为这是一个错误。
如果让git扩展glob(git add '*'
),它将添加“隐藏”的文件并跳过被忽略的文件。在这种情况下,它的工作方式与git add .
相同。
git add
将递归添加其子目录和文件。*
将由您的shell扩展为当前目录下的文件名。.
仅指当前目录,因此这两个命令通常是等效的。尽管*
由shell处理,而.
由git处理,但它们通常执行相同的操作。*
通常不包括隐藏文件(具有.
前缀的文件,例如.formatter.yml
)。此外,shell扩展不会考虑.gitignore
中的git忽略的文件。*
由 shell 处理,它不会考虑 .gitignore
文件,而 .
则会考虑。 - wisbuckygit add *
,即使在.gitignore中明确指定,"pycache"也将被添加。 - Seth P
*
的展开包括目录,那么无论如何 git 都会递归地将其添加。 - CB Bailey