我有一个这样的目录结构:

.git/
.gitignore
main/
  ...
tools/
  ...
...

在main和tools以及任何其他目录中,在任何级别,都可以有一个'bin'目录,我想忽略它(我也想忽略它下面的所有内容)。我在.gitignore中尝试了这些模式,但没有一个有效:

/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too

有人能帮帮我吗?如果我这样做,第一种模式(我认为应该是有效的)就会很好:

/main/**/bin/**/*

但我不希望每个顶级目录都有一个条目,也不希望每次添加新目录时都要修改.gitignore。

这是在Windows上使用最新的msysgit。

编辑:还有一件事,有些文件和目录的名称中有子字符串'bin',我不希望它们被忽略:)


当前回答

作为通知;

如果你认为.gitignore在某种程度上不起作用(所以添加了foo/*文件夹,但git状态仍然显示文件夹内容已被修改或类似的内容),那么你可以使用这个命令;

Git checkout——foo/*

其他回答

作为通知;

如果你认为.gitignore在某种程度上不起作用(所以添加了foo/*文件夹,但git状态仍然显示文件夹内容已被修改或类似的内容),那么你可以使用这个命令;

Git checkout——foo/*

将**/bin/添加到.gitignore文件中对我来说很有用(注意:bin文件夹没有添加到索引中)。

**以前从来没有正常工作过,但从git 1.8.2(2013年3月8日)开始,它似乎被明确提到并支持:

.gitignore和.gitattributes文件中的模式可以有**/,作为匹配0级或多级子目录的模式。 如。"foo/**/bar"匹配"foo"本身或"foo"的子目录中的"bar"。

在您的情况下,这意味着现在可能支持这一行:

/main/**/bin/

我在这里没有看到它,但这似乎是区分大小写的。一旦我更改为/Bin,文件就会被忽略。

如果您正在为任何VisualStudio (.NET)解决方案寻找一个很棒的全局.gitignore文件-我建议您使用这个:https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

我想它有最全面的。net项目。gitignore。