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

Owe*_*enP 32 git

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

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

    *.foo
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建文件"test.txt"和"test.foo".

  4. 尝试 git add .

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

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

wRA*_*RAR 32

这里git add *抱怨,但git add .做了预期的事情(1.7.0.4,Linux).

来自git-add(1):

默认情况下,git add命令不会添加被忽略的文件.如果在命令行中显式指定了任何被忽略的文件,git add将失败并显示被忽略文件的列表.由Git执行的目录递归或文件名通配所达到的忽略文件(在shell之前引用你的globs)将被默默忽略.

  • Lance:这是完全可能的 - 如果你只需要提交中的文本文件,`git add'*.txt'`就可以了.你想要引号来阻止shell扩展`*.txt`,然后git会缩放你的目录结构,寻找匹配的文件并将txt文件添加到提交中,参考Dan的答案如下. (5认同)

Dan*_*Dan 13

请注意,您也可以使用单引号来转义更复杂的globbing模式:

git add '*test*'

将允许git做自己的globbing.


vls*_*lsd 6

另一种方法是逃避globbing字符,如下所示:

git add \*
Run Code Online (Sandbox Code Playgroud)

  • 解释一个downvote是一个好习惯.这个答案也可以在我的系统上运行,实际上在git-add手册页中提到"由Git执行的目录递归或文件名通配所达到的忽略文件(在shell之前引用你的globs)将被默默忽略." (2认同)