[英]difference between "git add * " and "git add -f *"?
当我使用
git add *<\/code>时,它会跳过一些文件和文件夹。
但是相同的命令
git add *<\/code>对其他一些项目非常有效。
但是当我使用
git add -f *<\/code>时工作正常。
"
git add
man page :
默认情况下,git add命令不会添加被忽略的文件。 如果在命令行中显式指定了任何被忽略的文件,git add将失败并显示一个被忽略的文件列表。 由Git执行的目录递归或文件名通配所达到的忽略文件(在shell之前引用你的globs)将被默默忽略。 git add命令可用于使用-f(强制)选项添加被忽略的文件。
好的,这是来自Git参考手册参考https://git-scm.com/docs/git-add :
“默认情况下,' git add '命令不会添加被忽略的文件。如果在命令行中显式指定了任何被忽略的文件,git add将失败并显示被忽略的文件列表。” “git add命令可用于使用-f (强制)选项添加被忽略的文件。”
在git add *
, *
由shell解释,与Git无关。 如果你的shell是Bash,文件和目录以.
不会与*
匹配(默认情况下),因此它们不会被传递给git add
,也不会被添加到索引中。
如果要添加当前目录中的所有文件,包括以.
开头的文件,而不是git add *
.
,最好使用git add .
。
此外,正如其他答案所指出的, git add
不会添加标记为要忽略的文件。 您可以使用-f
强制添加此类文件,但很可能您不希望这样做,此标志的合法用例非常少。
@torek的一个非常有价值的评论:
值得注意的是:如果
git add *
正在Windows非bash解释器中运行,*
会直接传递给git add
,此时Git而不是shell会解释*
。 在这种情况下,名称以...开头的文件和目录.
将被添加。 可以通过运行git add '*'
在Linux或类似系统上模拟这个,但是自git add .
以来没有理由去打扰(除了演示)git add .
同样有效。
“git add”命令之后的属性“-f”或“--force”意味着您正在强制添加到暂存区域被忽略的文件(这意味着这些文件将成为下一次提交的一部分)
所以“git add *”和“git add -f ”之间的区别意味着在第一种情况下你添加了所有文件( )除了被忽略的文件,在第二种情况下你添加了所有文件(并且你强制git添加在 .gitignore 文件中通知的被忽略文件)
来源: https ://git-scm.com/docs/git-add#git-add--f
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.