编辑:执行以下步骤实际上会重现行为。是的,该文件命名为stuff.txt
,并且不会以文件名中的.
开头。当我做echo *
时,它确实确实打印了stuff.txt
。
命令git add *
通常与git add .
相似,其中一个主要例外:git add *
不会在GIT存储库的根目录中添加文件。它不会添加新文件(??
)或修改的现有文件(M
)。这是复制所需的步骤:
mac$ mkdir myrepo
mac$ cd myrepo
mac$ git init
mac$ touch stuff.txt
mac$ git add *
fatal: no files added
mac$ git status -s
?? stuff.txt
# It looks like 'git add *' totally dropped the ball.
mac$ git add .
# Nothing prints. Success?
mac$ git status -s
A stuff.txt
# Yes, success.
知道问题是什么?git add *
只要添加或修改的文件在子目录中,例如myrepo/mydir/
,就可以正常工作。该问题仅在存储库的顶部的文件中发生。
我的设置:
Mac OS X 10.9.1 Mavericks
GIT版本1.8.3.4(Apple Git-47)
我通过安装Apple Xcode获得了该版本的Git。
Apple终端版本2.4(326)
我应该指出,我纯粹是出于好奇。使用git add .
是100%令人满意的工作。
正如Mat的注释所暗示的那样,*
与.
开头的任何东西都不匹配。这就是外壳工作的方式(与git无关)。您可以通过在外壳中运行echo *
来对此进行测试。
要匹配dotfiles,您必须使用.[!.]*
。(使用echo .[!.]*
。)使用简单的.*
也将匹配.
和..
,您不想与git add
进行。