ignoring any 'bin' directory on a git project
我有这样的目录结构:
1 2 3 4 5 6 7 | .git/ .gitignore main/ ... tools/ ... ... |
在主目录和工具以及任何其他目录中,在任何级别上都可以有一个"bin"目录,我想忽略它(我也想忽略它下面的所有内容)。我在.gitignore中尝试过这些模式,但没有一个有效:
1 2 3 4 5 6 7 | /**/bin/**/* /./**/bin/**/* ./**/bin/**/* **/bin/**/* */bin/**/* bin/**/* /**/bin/* #and the others with just * at the end too |
有人能帮我吗?如果我这样做,第一种模式(我认为应该有效的模式)就可以正常工作:
1 | /main/**/bin/**/* |
但我不想为每个顶级目录都有一个条目,也不想每次添加新目录时都要修改.gitignore。
这是在使用最新msysgit的Windows上。
编辑:还有一件事,有些文件和目录的名称中有子字符串"bin",我不想忽略它们:)
在1.8.2版本之前,
忽略目录树中低于当前级别的所有名为bin的目录的方法是使用具有以下模式的
1 | bin/ |
在
编辑:如果您的git索引中已经有了不再希望跟踪的bin文件夹,那么您需要显式地删除它们。Git不会因为匹配新的
1 | git rm -r --cached bin |
你梦想中的江户第一〔0〕似乎是:
1 | bin/ |
在顶层。
我认为对于Git初学者来说值得一提:
If you already have a file checked in, and you want to ignore it, Git
will not ignore the file if you add a rule later. In those cases, you
must untrack the file first, by running the following command in your
terminal:
git rm --cached
因此,如果您希望在编辑后添加忽略本地存储库(已经存在)中的某些目录,则可以在根目录下运行该目录。
1 2 | git rm --cached -r . git add . |
它将基本上"刷新"您的本地回购和取消对被忽略文件的存储。
见:
http://git-scm.com/docs/git-rm,网址:
https://help.github.com/articles/ignoring-files/
The patterns in
.gitignore and.gitattributes files can have**/ , as a pattern that matches 0 or more levels of subdirectory.E.g."
foo/**/bar " matches"bar " in"foo " itself or in a subdirectory of"foo ".
在您的情况下,这意味着现在可以支持此行:
1 | /main/**/bin/ |
1 | [Bb]in/ |
匹配大小写
我没看到这里提到,但这似乎是区分大小写的。一旦我改为/bin,文件就会如预期的那样被忽略。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #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*/ |
如果您正在为任何Visual Studio(.net)解决方案寻找一个伟大的全局
Afaik是.NET项目中最全面的
步骤1:将以下内容添加到文件.gitignore。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # User-specific files *.suo *.user *.userosscache *.sln.docstates # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ bld/ [Bb]in/ [Oo]bj/ # Visual Studio 2015 cache/options directory .vs/ |
第2步:确保生效
如果问题仍然存在,那是因为.gitignore中的设置只能忽略最初未跟踪的文件。如果版本控制系统中已包含某些文件,则修改.gitignore无效。要完全解决这个问题,您需要打开git bash或package manager控制台(请参见下面的屏幕截图),在repository根文件夹中运行以下命令。
1 2 3 | $ git rm -r --cached . $ git add . $ git commit -m 'Update .gitignore' |
这样问题就完全解决了。
作为通知;
如果您认为
对于2.13.3及更高版本,只在.gitignore文件中写入bin应该忽略bin及其所有子目录和文件。
bin
从字面上看,所有的答案都不适合我;唯一适合我的答案是(在Linux上):
1 2 3 4 | **/bin (yes without the / in the end) git version 2.18.0 |
如果
换句话说,
如果模式不包含斜线,就像在
对于这个特定的问题,
将**/bin/添加到.gitignore文件对我有好处(注意:bin文件夹没有添加到索引中)。