我在Windows 7 x64上使用msysgit。当有一些.gitignore可能忽略的文件时,我无法弄清楚如何告诉Git添加大量文件。例如:
创建包含内容的.gitignore:
*.foo
创建文件“test.txt”和“test.foo”。
git add .
当我尝试这个时,git抱怨test.foo被忽略了,如果我真的想添加它,我应该使用-f。我宁愿做的是添加所有但配置为被忽略的文件。我查看了git-add文档,它看起来像-A应该有帮助;帮助说,“...并添加所有未被.gitignore机制忽略的未跟踪文件。”没有骰子,当我尝试git add -A .
时,我得到同样的错误。使用-f添加被忽略的文件,这不是我想要的。 (用例是在忽略.suo和其他文件后从VS项目中大量添加文件。)
这是我正在使用的git实现的问题,还是我缺少git-add的一些参数?
答案 0 :(得分:32)
这里git add *
抱怨,但git add .
做了预期的事情(1.7.0.4,Linux)。
来自git-add(1)
:
git add命令不会添加 默认情况下忽略文件。如果有的话 忽略的文件是明确的 在命令行中指定,git add 将失败的列表被忽略 文件。已达到的忽略文件 目录递归或文件名 由Git执行的globbing(引用你的 在shell之前的globs) 默默地忽略了。
答案 1 :(得分:13)
注意你也可以使用单引号来逃避更复杂的globbing模式:
git add '*test*'
将允许git执行自己的globbing。
答案 2 :(得分:6)
另一种方法是逃避泛化字符,如下所示:
git add \*
答案 3 :(得分:2)
请注意,git add --ignore-errors *
现在可以正常工作,即使忽略了某些文件。
commit 1d31e5a见Michael J Gruber (mjg
),Git 2。3。0(2015年2月)
add
:仅忽略忽略的文件“
git add foo bar
”在foo
被忽略时既不会添加bar
也不会添加bar
,但会让用户重新检查其命令调用。 当“git add foo.*
”受shell扩展限制并且某些扩展文件被忽略时,这将变得不那么有用。“
git add --ignore-errors
”应该在索引某些文件时忽略错误并添加其他文件。它确实忽略了实际索引尝试的错误,但不会忽略上面概述的错误“file is ignored
”。这是出乎意料的。更改“
git add foo bar
”以在忽略foo
时添加bar
,但问题是 警告并返回更改前的失败代码。也就是说,在尝试添加被忽略的文件的情况下,我们现在采用相同的方式(使用或不使用“
--ignore-errors
”),当“--ignore-errors
”时,我们会采取更严重的索引错误。已指定。