编辑:执行以下步骤实际上会重现该行为。是的,该文件名为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小牛队
Git版本1.8.3.4(Apple Git-47)
我通过安装Apple Xcode获得了那个版本的Git。
Apple终端版本2.4(326)
我应该指出,我纯粹是出于好奇而要求。使用git add .
是一种100%令人满意的解决方法。
答案 0 :(得分:1)
正如Mat的评论所暗示的那样,*
与以.
开头的任何内容都不匹配。这就是shell的工作方式(与git无关)。您可以通过在shell中运行echo *
来对此进行测试。
要匹配dotfiles,您必须使用.[!.]*
。 (使用echo .[!.]*
对其进行测试。)简单地使用.*
也会匹配.
和..
,而您git add
则不想这样做。