git - .gitignore - 忽略任何'bin '目录

  显示原文与译文双语对照的内容

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


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

在主和工具中,以及任何其他目录,在任何级别,都可以有一个'纸盒'目录,我想忽略( 我想忽略它下面的一切) 。 我已经尝试过这些模式中的每个模式,但它们都不工作:


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

谁能帮助我? 如果我这样做,第一个模式( 我认为应该工作的那个) 工作得很好:

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

 

但我不想在每个top-level目录中都有一个条目,我也不想修改。每次添加新的目录时,都需要 gitignore 。

在 Windows 上使用最新的hcs 。

编辑:还有一件事,有的文件和目录有'纸盒'子字符串在他们的名字中,我不希望那些被忽略:)

时间:

我不知道 **.gitignore 模式中有什么特殊含义来自于。 在 gitignore 手册页或者 fnmatch 手册页中没有提到 gitignore 手册页。

在目录树的当前级别下忽略所有名为bin的目录的方法是使用一个带有模式的.gitignore 文件:

 
bin/

 

从gitignore手册页可以很清楚地看出这一点。 甚至有一个使用类似模式忽略名为 foo的目录的例子。

1.8.2,git支持 **: 从版本更新为表示零个或者多个子目录( 参见发行说明 。) 。

** 以前从未正确工作过,但由于 git 1.8.2 03月8日 2013 ),它似乎被显式提及并支持:

.gitignore.gitattributes 文件中的模式可以有 **/,为版面 0或者多个级别的子目录相匹配。

E.g 。" foo/**/bar"" foo"" bar"" foo"本身或者在一个子目录中的匹配。

在你的情况下,这意味着此行现在可能被支持:

 
/main/**/bin/

 

[Bb]in 将解决这个问题,但是,。 这里有一个更广泛的事情列表,你应该忽略( GitExtension示例列表):


#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.sbr
obj/
[Rr]elease*/
_ReSharper*/

作为通知;

如果你认为 .gitignore 不能以( 所以添加了 foo/* 文件夹,但 git status 仍然显示文件夹内容已经修改或者类似) 方式工作,那么你可以使用这个命令;

git checkout -- foo/*

特别是,.gitignore 文件和 .git 文件夹在同一目录下有英镑。 开始时,我创建了 .git/.gitignore 文件,但它不工作。

...