我有一个这样的目录结构:
.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',我不希望它们被忽略:)
我认为对于git初学者来说有必要提一下:
如果你已经签入了一个文件,你想忽略它,Git
如果稍后添加规则,将不会忽略该文件。在这些情况下,你
必须首先通过在您的?中运行以下命令取消跟踪文件
终端:
Git rm——缓存
因此,如果你想在编辑.gitignore后添加忽略本地存储库中的某些目录(这些目录已经存在),你需要在根目录上运行这个
git rm --cached -r .
git add .
它将基本上“刷新”您的本地回购和取消被忽略的文件。
See:
http://git-scm.com/docs/git-rm,
https://help.github.com/articles/ignoring-files/
步骤1:在.gitignore文件中添加以下内容。
#用户特定的文件
* .suo
* .user
* .userosscache
* .sln.docstates
#构建结果
(Dd) ebug /
(Dd) ebugPublic /
(Rr)抽/
(Rr)抽/
x64 /
x86 /
bld /
(Bb) /
(Oo) bj /
# Visual Studio 2015缓存/选项目录
.vs /
第二步:确保生效
如果问题仍然存在,那是因为.gitignore中的设置只能忽略最初没有跟踪的文件。如果一些文件已经包含在版本控制系统中,那么修改.gitignore是无效的。
要完全解决这个问题,您需要打开Git Bash或Package Manager Console(见下面的截图),在存储库根文件夹中运行以下命令。
Git rm -r——cached。
Git添加。
git commit -m "Update .gitignore"
这样问题就完全解决了。
除了@CB Bailey的回答:
我试图从索引和跟踪中删除多个名为et-cache(来自Wordpress divi主题的缓存文件夹)的文件夹(在子文件夹中)。
我添加了
et-cache/
到.gitignore文件。但
git rm -r --cached et-cache
导致错误:
致命:路径规格'et-cache'没有匹配任何文件
所以解决方案是使用powershell:
Get-ChildItem et-cache -Recurse |% {git rm -r --cached $_.FullName}
这将搜索所有名为et-cache的子文件夹。然后使用每个文件夹路径(fullname)将其从git中的跟踪中删除。