13

git animals有这一系列命令:

git init
git add *
git commit -a -m ‘initial commit and release!’

git add *git add .(我通常做的)相比,它们的作用是什么?

4

2 回答 2

17

git add *将添加作为shell扩展结果的所有路径,*git add .将告诉 git 添加当前目录。

git add *不会添加以 a 开头的路径,.因为 shell 扩展*将这些路径视为“隐藏”路径。

git add *如果任何扩展路径当前被 git 忽略,也会失败,因为如果您明确指定忽略的路径而不传递-f(force) 标志以表明您确实想要添加忽略的路径,git 会认为这是一个错误。

如果您让 git 扩展 glob ( git add '*'),它将添加“隐藏”文件并跳过被忽略的文件。它的工作原理与git add .这种情况相同。

于 2012-06-10T18:33:26.710 回答
2

默认情况下,将目录传递给git add将递归地添加其子目录和文件。

通配符*将由您的 shell 扩展为当前目录下的文件名。

而且你知道,在 Unix 中.只指当前目录,所以这两个命令是等价的。虽然*由shell.处理并由git处理,但它们做同样的事情。

于 2012-06-10T18:33:01.283 回答