让.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/

上面的代码会忽略除.gitignoreREADME.mdfolder/a/b1/folder/a/b2/以及这两个文件夹中包含的所有文件。 (并且.DS_Store*.log文件在这些文件夹中将被忽略。)

很明显,我可以做例如!/folder!/.gitignore

更多信息:http://git-scm.com/docs/gitignore

链接地址: http://www.djcxy.com/p/23389.html

上一篇: Make .gitignore ignore everything except a few files

下一篇: When should I use rm, git rm, git rm