我有一个这样的目录结构:
.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:在.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"
这样问题就完全解决了。
我认为对于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/