繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM