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

  • 本文关键字:add git 区别 git
  • 更新时间 :
  • 英文 :


当我使用git add *时,它跳过了一些文件和文件夹。但是相同的命令git add *在其他项目中也能很好地工作。但当我使用git add -f *时,它工作得很好。

好的,这来自Git参考手册refhttps://git-scm.com/docs/git-add:

默认情况下,git add命令不会添加被忽略的文件。如果在命令行上明确指定了任何被忽略的文件,git add将失败,并显示被忽略文件的列表。git add命令可用于添加带有-f(强制)选项的被忽略文件。

git add *中,*由shell解释,与Git无关。如果你的外壳是Bash,以CCD_ 9开始的文件和目录将不会被CCD_,因此它们将不会被传递到git add并且不会被添加到索引中。

如果要添加当前目录中的所有文件,包括以.开头的文件,最好使用git add .,而不是git add *

此外,正如其他答案所指出的,git add不会添加标记为忽略的文件。您可以使用CCD_ 16强制添加此类文件,但很可能你不想那样做,这个标志的合法使用案例很少。

@torek:的一条非常有价值的评论

值得注意的是:如果git add *在Windows非bash解释器中运行,则*会直接传递给git add,此时解释*的是Git,而不是shell。在这种情况下,将添加名称以.开头的文件和目录。可以通过运行git add '*'在Linux或类似系统上模拟这一点,尽管没有理由麻烦(除了演示),因为git add .同样有效。

git add手册页:

git add命令默认情况下不会添加被忽略的文件。如果有忽略的文件是在命令行上显式指定的,git add将失败,并显示一个被忽略的文件列表。忽略的文件由Git执行的目录递归或文件名globbing(引用您的shell之前的globs)将被静默地忽略。git add命令可以使用-f(force)选项添加被忽略的文件。

属性&quot-f";或"--"力";在";git add"命令意味着您正在强制将忽略的文件添加到暂存区(这意味着这些文件将成为下一次提交的一部分)

因此;git-add*";以及";git add-f"意味着在第一种情况下,您添加了除被忽略文件之外的所有文件(),在第二种情况下添加了所有文件(并强制git添加在.gitignore文件中通知的被忽略文件)

来源:https://git-scm.com/docs/git-add#git-添加-f

最新更新