为什么赢了" git add *"添加" git status"说没有分期?

时间:2014-07-25 07:10:49

标签: git

当我输入

git add *

它就像没有添加文件一样,但是当我这样做时

git status

它显示了未分阶段的文件。我可以通过手动输入名称来进行分级,如图所示,但在相同的情况下需要相当长的时间。

我的问题是,在这种情况下,为什么我不能只输入" git add *"添加未暂存的文件,我该如何解决?提前谢谢。

此图显示了我遇到的行为http://i.imgur.com/YjqZ85P.png

2 个答案:

答案 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 .