我有一个这样的目录结构。
.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.8.2版本之前,**
在.gitignore
中没有任何特殊含义。从1.8.2开始,git支持**
表示零或多个子目录(见发布说明)。
忽略目录树中低于当前级别的所有被称为bin的目录的方法是用一个.gitignore
文件,其模式为:。
bin/
在 "man "页面,有一个使用类似模式忽略名为 "foo "的目录的例子。
编辑: 如果你的git索引中已经有任何bin文件夹,而你不想再追踪它们,那么你需要明确删除它们。Git不会因为已经被追踪的路径与新的".gitignore "模式匹配而停止追踪。只从索引(--缓存)中执行文件夹删除(rm),循环(-r)。根bin文件夹的命令行示例。
git rm -r --cached bin
你梦想中的".gitignore "似乎是这样的。
bin/
在顶层。
我觉得对于git初学者来说,这是值得一提的。
如果你已经有一个文件被签入,而你想忽略它,**Git
将不会忽略该文件,如果你以后添加一个规则**。 在这些情况下,您可以
必须先取消对文件的跟踪,在下面的命令中运行 终端。 终端:
git rm --cached
。
因此,如果你想在编辑.gitignore之后,添加忽略本地仓库中的一些目录(这些目录已经存在),你需要在你的根目录上运行这个命令。
git rm --cached -r .
git add .
它基本上会'刷新&39。 你的本地repo和取消stage忽略的文件。
参见。
**
以前从来没有正常工作过,但自从 [git 1.8.2 (March, 8th 2013)][1]之后,它似乎被明确提及并得到支持。
.gitignore
和.gitattributes
文件中的模式可以有`/`,作为匹配0级以上子目录的模式**。
例如 "
foo/**/bar
" 匹配"bar
"。 中的"foo
" 本身或在"foo
"的子目录中。
在您的例子中,这意味着这一行可能会被支持。
/main/**/bin/
[1]: https://github.com/git/git/blob/master/Documentation/RelNotes/1.8.2.txt#L85-L88
[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*/
如果你正在为任何Visual Studio (.NET)解决方案寻找一个伟大的全局.gitignore
文件,我推荐你使用这个文件。
https://github.com/github/gitignore/blob/master/VisualStudio.gitignore .gitignore
文件。
AFAIK它有最全面的.NET项目的.gitignore
。
第1步:将以下内容添加到.gitignore.文件中。 在.gitignore.文件中添加以下内容。
<!--开始片段。 js hide: false console.true babel: true true babel.false --> -- begin snippet: js hide: false console: true false -->
*.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 Console**(见下图截图),在版本库根目录下运行以下命令。
<!--开始 snippet: js hide: false console.true babel: true true babel.false --> -- 开始 snippet: js hide: false console: true false -->
$ git rm -r --cached .
$ git add .
$ git commit -m 'Update .gitignore'
<!--结束片段-->
[![PM控制台][1]][1] 那么这个问题就会彻底解决。