我知道. 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 文件夹,除了 pippo / pluto / paperino.xml
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/
!folder/a/file.txt
# Adding to the above, this also works...
!/folder/a/deeply
/folder/a/deeply/*
!/folder/a/deeply/nested
/folder/a/deeply/nested/*
!/folder/a/deeply/nested/subfolder
上面的代码将忽略除.gitignore
, README.md
, folder/a/file.txt
, folder/a/b1/
和folder/a/b2/
以及最后两个文件夹中包含的所有内容之外的所有文件。 (并且.DS_Store
和*.log
文件将在这些文件夹中被忽略。)
显然我也可以做!/folder
或!/.gitignore
。
更多信息: http : //git-scm.com/docs/gitignore