当我输入
git add *
它就像没有添加文件一样,但是当我这样做时
git status
它显示了未分阶段的文件。我可以通过手动输入名称来进行分级,如图所示,但在相同的情况下需要相当长的时间。
我的问题是,在这种情况下,为什么我不能只输入" git add *"添加未暂存的文件,我该如何解决?提前谢谢。
此图显示了我遇到的行为http://i.imgur.com/YjqZ85P.png
答案 0 :(得分:5)
如果要添加所有文件,请不要使用'*'(由shell解释)
git add .
git add -u
会添加更新的文件。 git add -A .
将两者结合起来
请参阅“What's the difference between git add .
and git add -u
?”
另外“Difference between “git add -A” and “git add .””:
.
表示该命令在当前子目录中运行,而不是在整个工作树中运行。
如果您想知道文件是否被忽略:git check-ignore -v -- yourFile
。
如“What's the difference between git add *
and git add .
, if any?”中所述:
git add *
将添加{strong> shell扩展*
的所有路径,而git add .
会告诉git添加当前目录。< / p>
git add *
不会添加以.
开头的路径,因为*
的shell扩展会将这些路径视为“隐藏”路径。
torek解释in the comments为什么“*
”在此特定情况下失败:
在这种特殊情况下,
git add *
变为
git add Bootstrap afile bfile ... index.php main.js ... zfile
或某些此类,
git add *
因致命错误而停止,因为您告诉它:
- “不要通过
添加Bootstrap
”和.gitignore
- “通过显式路径添加Bootstrap”
它不知道应该服从哪个,所以它什么也不做。
答案 1 :(得分:0)
检查您是否确实要忽略您在Bootstrap/
中所说的目录.gitignore
。另外,正如@VonC在他的回答中提到的,将当前目录添加到临时区域的正确方法是git add .