.gitignore – 忽略任何“bin”目录
我有这样的目录结构:
.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。
编辑: 还有一件事,有文件和目录中的子string“bin”在他们的名字,我不希望这些被忽略:)
在版本1.8.2之前, **
在.gitignore
没有任何特殊的含义。 从1.8.2开始,git支持**
表示零个或多个子目录(请参阅发行说明 )。
忽略目录树中当前级别以下任何位置的所有目录的方式是使用带有模式的.gitignore
文件:
bin/
在man
页中,有一个使用类似模式忽略名为foo
的目录的示例。
编辑:如果你已经有你的git索引中的任何bin文件夹,你不想跟踪,那么你需要明确地删除它们。 Git不会停止跟踪已经被跟踪的path,因为现在匹配一个新的.gitignore
模式。 执行一个文件夹从索引只删除( rm )( – caching )recursivelly( -r )。 root bin文件夹的命令行示例:
git rm -r --cached bin
你的梦想的意思是:
bin/
在顶层。
我认为这是值得提到的Git初学者:
如果你已经有一个文件签入了,而你想忽略它, 如果你稍后添加一个规则 , Git不会忽略这个文件 。 在这种情况下,您必须先在terminal中运行以下命令,以解除文件夹:
git rm --cached
所以如果你想在编辑.gitignore之后添加忽略你本地仓库中的一些目录(已经存在),你可以在你的根目录下运行这个目录
git rm --cached -r . git add .
它将基本上“刷新”您的本地回购和忽略忽略的文件。
看到:
**
从来没有正常工作过,但自1.8.2(2013年3月8日) ,似乎是明确提到和支持:
.gitignore
和.gitattributes
文件中的模式可以具有**/
,作为匹配0或更多级子目录的模式 。例如“
foo/**/bar
”与“foo
”本身或“foo
”的子目录中的“foo/**/bar
”相匹配。
就你而言,这意味着现在可以支持这一行:
/main/**/bin/
[Bb]in/
匹配大小写
我没有看到它在这里提到,但这似乎是区分大小写的。 一旦我改变到/ 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
文件的任何Visual Studio(.NET)解决scheme – 我build议你使用这一个: https : //github.com/github/gitignore/blob/master/VisualStudio.gitignore
AFAIK它有最全面的.NET项目的.gitignore
。
作为通知;
如果你想.gitignore
不能以某种方式工作(所以添加foo/*
文件夹,但git status
仍显示文件夹内容被修改或类似的东西),那么你可以使用这个命令;
git checkout -- foo/*
添加** / bin /到.gitignore文件为我做了窍门(注意:bin文件夹没有被添加到索引)。
对于2.13.3及之后的版本,只要在你的.gitignore文件中写入bin应该忽略bin及其所有子目录和文件
箱子