当我使用" git add *"它正在跳过一些文件和文件夹。但同样的命令" git add *"正在为其他项目工作。但是,当我使用" git add -f *"工作正常。
答案 0 :(得分:1)
git add
man page:
默认情况下,git add命令不会添加被忽略的文件。如果有的话 忽略的文件在命令行中显式指定,git add 将失败并显示一系列被忽略的文件。已达到的忽略文件 由Git执行的目录递归或文件名通配(引用你的 在shell之前的globs将被默默地忽略。 git add命令 可以使用-f(强制)选项添加被忽略的文件。
答案 1 :(得分:1)
好的,这是来自Git参考手册参考https://git-scm.com/docs/git-add:
"' git add '默认情况下,命令不会添加忽略的文件。如果在命令行中显式指定了任何被忽略的文件,git add将失败,并显示一系列被忽略的文件。" " git add命令可用于使用 -f (强制)选项添加被忽略的文件。"
答案 2 :(得分:1)
在git add *
中,*
由shell解释,
并且与Git无关。
如果你的shell是Bash,
以.
开头的文件和目录将不会与*
匹配(默认情况下),
所以它们不会被传递给git add
,也不会被添加到索引中。
如果您要添加当前目录中的所有文件(包括以git add *
开头的文件),而不是.
,则最好使用git add .
。
此外,正如其他答案所指出的,git add
不会添加标记为要忽略的文件。
您可以使用-f
强制添加此类文件,
但很可能你不想这样做,
这个标志的合法使用案例很少。
@torek非常有价值的评论:
值得注意的是:如果在Windows非bash解释器中运行
git add *
,则*
将按字面传递给git add
,此时Git(而不是shell)会解释*
。在这种情况下,将添加名称以.
开头的文件和目录。可以通过运行git add '*'
在Linux或类似系统上模拟这一点,尽管没有理由去打扰(除了演示),因为git add .
同样有效。