让.gitignore忽略除几个文件以外的所有内容
我明白一个.gitignore文件会隐藏来自Git版本控制的指定文件。 我有一个项目(LaTeX),它在运行时会生成大量额外的文件(.auth,.dvi,.pdf,日志等),但我不希望跟踪这些文件。
我知道我可以(也许应该)制作它,所有这些文件都放在项目中的一个单独的子文件夹中,因为我可以忽略该文件夹。
然而,是否有任何可行的方法将输出文件保留在项目树的根目录中,并使用.gitignore忽略除Git追踪的文件之外的所有内容? 就像是
# Ignore everything
*
# But not these files...
script.pl
template.latex
# etc...
一个可选的前缀!
否定了这种模式; 任何先前模式排除的匹配文件将再次包含在内。 如果否定模式匹配,这将覆盖较低优先模式源。
# Ignore everything
*
# But not these files...
!.gitignore
!script.pl
!template.latex
# etc...
# ...even if they are in subdirectories
!*/
# if the files to be tracked are in subdirectories
!*/a/b/file1.txt
!*/a/b/c/*
如果你想忽略一个目录的全部内容,除了其中的一个文件,你可以为文件路径中的每个目录编写一对规则。 例如.gitignore忽略除pippo / pluto / paperino.xml以外的pippo文件夹
的.gitignore
pippo/*
!pippo/pluto
pippo/pluto/*
!pippo/pluto/paperino.xml
在大多数情况下,您希望使用/*
而不是*
或*/
使用*
是有效的,但它递归地工作。 它不会从那时起查看目录。 人们推荐使用!*/
将目录再次列入白名单,但实际上最好使用/*
将最高级别文件夹列入黑名单,
# Blacklist files/folders in same directory as the .gitignore file
/*
# Whitelist some files
!.gitignore
!README.md
# Ignore all files named .DS_Store or ending with .log
**/.DS_Store
**.log
# Whitelist folder/a/b1/ and folder/a/b2/
# trailing "/" is optional for folders, may match file though.
# "/" is NOT optional when followed by a *
!folder/
folder/*
!folder/a/
folder/a/*
!folder/a/b1/
!folder/a/b2/
上面的代码会忽略除.gitignore
, README.md
, folder/a/b1/
和folder/a/b2/
以及这两个文件夹中包含的所有文件。 (并且.DS_Store
和*.log
文件在这些文件夹中将被忽略。)
很明显,我可以做例如!/folder
或!/.gitignore
。
更多信息:http://git-scm.com/docs/gitignore
链接地址: http://www.djcxy.com/p/23389.html