git - 使.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
!*/

如果你想忽略一个目录的全部内容,除了其中一个文件之外,你可以为文件路径中的每个目录编写一对规则。 gitignore忽略pippo文件夹,除了 pippo/pluto/paperino.xml

gitignore


pippo/*
!pippo/pluto
pippo/pluto/*
!pippo/pluto/paperino.xml

要忽略某个目录中的某些文件,你必须按正确的顺序来执行这里操作:

例如,忽略一切文件夹"应用程序"除了 index.php 和文件夹"配置"注意订单

你必须先否定你想要的。

失败

application/*

!application/config/*

!application/index.php

工时

!application/config/*

!application/index.php

application/*

更具体一点:

示例:忽略 webroot/cache 中的所有内容- 但保留 webroot/cache/.htaccess

通知后削减 cache 文件夹:

失败


webroot/cache*
!webroot/cache/.htaccess

工时


webroot/cache/*
!webroot/cache/.htaccess

我从 Bower jquery和 Angular 。 Bower 已经将它们安装在


/public_html/bower_components/jquery/dist/bunch-of-jquery-files
/public_html/bower_components/jquery/src/bunch-of-jquery-source-files
/public_html/bower_components/angular/angular-files

最小化的jquery在 dist 目录中,Angular 在 angular 目录内。 我只需要最小化的文件来提交到 github 。 一些篡改。gitignore,这就是我所做的。


/public_html/bower_components/jquery/*
!public_html/bower_components/jquery/dist
/public_html/bower_components/jquery/dist/*
!public_html/bower_components/jquery/dist/jquery.min.js
/public_html/bower_components/angular/*
!public_html/bower_components/angular/angular.min.js

希望有人能找到这个有用的东西。

使用 * 是有效的,但它可以递归工作。 它不会从随后的目录中查看目录。 人推荐使用 */ 再次白名单目录,但实际上它是更直观和 /* 黑名单文件夹的最高水平。! 除非你要显式地包含所有目录( 和子目录),并且不需要 */ 。!


# Blacklist files/folders in same directory as the. gitignore file
/*

# Whitelist some files
!.gitignore
!README.md

# Ignore all files that end with. DS_Store
**/.DS_Store

# Whitelist folder/a/b1/and folder/a/b2/
# last"/" is optional when folder, may match file though.
# It is NOT optional when followed by a *
!folder/
folder/*
!folder/a/
folder/a/*
!folder/a/b1/
!folder/a/b2/

上代码将忽略除 .gitignoreREADME.mdfolder b1/folder b2/ 以外的所有文件以及这两个文件夹中包含的所有文件。 ( 这些文件夹中将忽略 .DS_Store 文件。)

显然我可以做 IE 。 /folder 或者 /.gitignore 也是一样的。不管他们怎么做。!

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

有很多类似的问题,所以我将发布我之前写的内容:

要让它在我的机器上工作,唯一的方法是这样做:


# Ignore all directories, and all sub-directories, and it's contents:
*/*

#Now ignore all files in the current directory 
#(This fails to ignore files without a".", for example 
#'file.txt' works, but 
#'file' doesn't):
*.*

#Only Include these specific directories and subdirectories and files if you wish:
!wordpress/somefile.jpg
!wordpress/
!wordpress/*/
!wordpress/*/wp-content/
!wordpress/*/wp-content/themes/
!wordpress/*/wp-content/themes/*
!wordpress/*/wp-content/themes/*/*
!wordpress/*/wp-content/themes/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*/*

注意,你必须明确地允许每个级别包含的内容。 所以如果我在主题下有 5的子目录,我仍然需要拼写。

这里来自 @Yarin's 评论: http://stackoverflow.com 5250314/1696153

这些是有用的主题:

我也尝试了

 
*
*/*
**/**

 

**/wp-content/themes/**

或者 /wp-content/themes/**/*

这对我来说都不起作用。 许多线索和错误 !

...