当忽略文件存在时,如何使用通配符进行git-add?

时间:2010-04-06 20:24:27

标签: git

我在Windows 7 x64上使用msysgit。当有一些.gitignore可能忽略的文件时,我无法弄清楚如何告诉Git添加大量文件。例如:

  1. 初始化git存储库。
  2. 创建包含内容的.gitignore:

    *.foo
    
  3. 创建文件“test.txt”和“test.foo”。

  4. 尝试git add .
  5. 当我尝试这个时,git抱怨test.foo被忽略了,如果我真的想添加它,我应该使用-f。我宁愿做的是添加所有配置为被忽略的文件。我查看了git-add文档,它看起来像-A应该有帮助;帮助说,“...并添加所有未被.gitignore机制忽略的未跟踪文件。”没有骰子,当我尝试git add -A .时,我得到同样的错误。使用-f添加被忽略的文件,这不是我想要的。 (用例是在忽略.suo和其他文件后从VS项目中大量添加文件。)

    这是我正在使用的git实现的问题,还是我缺少git-add的一些参数?

4 个答案:

答案 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 1d31e5aMichael 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”时,我们会采取更严重的索引错误。已指定。