忽略git项目上的任何'bin'目录
我有这样的目录结构:.git/.gitignoremain/...tools/......在main和tools以及任何其他目录中的任何级别上,都可以有一个“ bi
我有这样的目录结构:
.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”,我不想忽略它们:)
#1楼
您梦dream .gitignore似乎是:
bin/
在顶层。
#2楼
在1.8.2版之前, **在.gitignore没有任何特殊含义。 从1.8.2开始,git支持**表示零个或多个子目录(请参见发行说明 )。
忽略目录树中当前级别以下任何位置的所有名为bin的目录的方法是使用.gitignore文件,其模式如下:
bin/
在man页中,有一个使用类似模式忽略名为foo的目录的示例。
编辑:如果您已经不再希望跟踪git索引中的任何bin文件夹,则需要显式删除它们。 Git不会仅仅因为它们现在匹配新的.gitignore模式而停止跟踪已经被跟踪的路径。 递归地( -r )从索引( --cached )仅执行文件夹删除( rm )。 根bin文件夹的命令行示例:
git rm -r --cached bin
#3楼
我没有看到这里提到的内容,但这似乎区分大小写。 一旦更改为/ Bin,文件将按预期被忽略。
#4楼
**以前从未正常运行过,但是自git 1.8.2(2013年3月8日)以来,似乎已明确提及并支持它:
.gitignore和.gitattributes文件中的模式可以具有**/,作为与0或更高级别的子目录匹配的模式 。例如,“
foo/**/bar”匹配“bar”中的“foo”本身或在“子目录foo”。
就您而言,这意味着现在可以支持此行:
/main/**/bin/
#5楼
[Bb]in/
匹配大写和小写
#6楼
[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*/
#7楼
作为通知;
如果您认为.gitignore不能以某种方式工作(因此在其中添加了foo/*文件夹,但是git status仍显示该文件夹的内容已被修改或类似的内容),则可以使用此命令;
git checkout -- foo/*
#8楼
我认为对于git初学者来说值得一提:
如果您已经签入了文件,并且想要忽略它, 那么以后再添加规则时, Git将不会忽略该文件 。 在这种情况下,必须首先通过在终端中运行以下命令来取消跟踪文件:
git rm --cached
因此,如果要在编辑.gitignore之后添加忽略本地存储库中某些目录(已经存在)的目录,则希望在根目录下运行该目录
git rm --cached -r .
git add .
基本上,它将“刷新”您的本地存储库并取消暂存被忽略的文件。
看到:
http://git-scm.com/docs/git-rm ,
https://help.github.com/articles/ignoring-files/
#9楼
如果您正在为任何Visual Studio(.NET)解决方案寻找一个出色的全局.gitignore文件-我建议您使用此文件: https : //github.com/github/gitignore/blob/master/VisualStudio.gitignore
AFAIK对于.NET项目具有最全面的.gitignore 。
#10楼
将** / bin /添加到.gitignore文件中对我来说很成功(注意:bin文件夹未添加到索引中)。
#11楼
对于2.13.3及更高版本,仅在.gitignore文件中写入bin应该忽略该bin及其所有子目录和文件
箱子
#12楼
步骤1:将以下内容添加到文件.gitignore中。
# 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控制台 (请参见下面的屏幕截图)以在存储库根文件夹中运行以下命令。
$ git rm -r --cached . $ git add . $ git commit -m 'Update .gitignore'
#13楼
从字面上看,没有一个答案对我真正有用。 唯一对我有用的是(在Linux上):
**/bin
(yes without the / in the end)
git version 2.18.0
#14楼
如果.gitignore内部的模式以斜杠/结束,它将仅找到与目录匹配的内容。
换句话说, bin/将匹配目录bin及其下的路径,但不会匹配常规文件或符号链接bin 。
如果该模式不包含斜杠 (例如bin Git中的斜线) ,则Git将其视为外壳glob模式(贪婪)。 所以最好是使用简单的/bin 。
bin并不是解决此特定问题的最佳解决方案。
更多推荐

所有评论(0)