" git add *"之间的区别和" git add -f *"?

时间:2017-11-18 12:29:16

标签: git

当我使用" git add *"它正在跳过一些文件和文件夹。但同样的命令" git add *"正在为其他项目工作。但是,当我使用" git add -f *"工作正常。

3 个答案:

答案 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 .同样有效。