我有文件夹application/
我添加到.gitignore
。 在application/
文件夹中是文件夹application/language/gr
。 如何包含此文件夹? node
我已经试过了 git
application/ !application/language/gr/
没有运气... 程序员
@Chris Johnsen的答案很好,可是对于较新版本的Git(1.8.2或更高版本),您能够利用双星号模式来得到更多速记解决方案: github
# assuming the root folder you want to ignore is 'application' application/**/* # the subfolder(s) you want to track: !application/language/gr/
这样,您没必要“忽略”要跟踪的子文件夹的父目录。 json
对于Git 2.17.0(不肯定此版本的发布时间。可能回到1.8.2以前的版本),对致使文件生成的每一个子目录使用**
模式与excludes结合使用。 例如: app
# assuming the root folder you want to ignore is 'application' application/** # Explicitly track certain content nested in the 'application' folder: !application/language/ !application/language/gr/ !application/language/gr/** # Example adding all files & folder in the 'gr' folder !application/language/gr/SomeFile.txt # Example adding specific file in the 'gr' folder
来自Karsten Blees(kblees)的Git 1.9 / 2.0 提交59856de (2014年第1季度)澄清了如下状况: wordpress
gitignore.txt
:阐明排除目录的递归性质 可选的前缀“
!
”,用于否认模式; 先前模式排除的全部匹配文件将再次包含在内。 性能若是排除该文件的父目录,则没法从新包含该文件。 (
*
)
(*
:除非git 2.8+中知足某些条件,请参阅下文)
因为性能缘由,Git不会列出被排除的目录,所以包含在文件上的任何模式(不管它们在何处定义)都无效。 spa对于以文字“
!
”开头的模式,例如“\\!important!.txt
”,在第一个“!
”前面放置反斜杠(“\\
”)。 .net排除特定目录
foo/bar
之外的全部内容的示例(请注意/*
-不带斜杠,通配符还将排除foo/bar
内的全部内容):
-------------------------------------------------------------- $ cat .gitignore # exclude everything except directory foo/bar /* !/foo /foo/* !/foo/bar --------------------------------------------------------------
在您的状况下:
application/* !application/**/ application/language/* !application/language/**/ !application/language/gr/**
您必须先将文件夹列入白名单,而后才能将给定文件夹中的文件列入白名单。
2016年2月/ 3月更新:
请注意,在git 2.9.x / 2.10(2016年中?)下, 若是从新包含的路径中没有通配符,则若是排除了该文件的父目录,则能够从新包含该文件。
NguyễnTháiNgọcDuy( pclouds
)试图添加此功能:
所以,使用git 2.9+可能确实有效,但最终被还原:
application/ !application/language/gr/
关于此还有不少相似的问题,所以我将发布我以前写的内容:
我在计算机上使用此方法的惟一方法是这样作:
# 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: !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的评论: https : //stackoverflow.com/a/5250314/1696153
这些是有用的主题:
我也试过
* */* **/**
和**/wp-content/themes/**
或/wp-content/themes/**/*
这些都不对我有用。 大量的反复试验!
所以,因为许多程序员都使用node。 知足此问题的用例是排除一个模块module-a
之外的node_modules
,例如:
!node_modules/ node_modules/* !node_modules/module-a/
走下目录结构以获取所需内容的另外一个示例。 注意:我没有排除Library/
而是Library/**/*
# .gitignore file Library/**/* !Library/Application Support/ !Library/Application Support/Sublime Text 3/ !Library/Application Support/Sublime Text 3/Packages/ !Library/Application Support/Sublime Text 3/Packages/User/ !Library/Application Support/Sublime Text 3/Packages/User/*macro !Library/Application Support/Sublime Text 3/Packages/User/*snippet !Library/Application Support/Sublime Text 3/Packages/User/*settings !Library/Application Support/Sublime Text 3/Packages/User/*keymap !Library/Application Support/Sublime Text 3/Packages/User/*theme !Library/Application Support/Sublime Text 3/Packages/User/**/ !Library/Application Support/Sublime Text 3/Packages/User/**/*macro !Library/Application Support/Sublime Text 3/Packages/User/**/*snippet !Library/Application Support/Sublime Text 3/Packages/User/**/*settings !Library/Application Support/Sublime Text 3/Packages/User/**/*keymap !Library/Application Support/Sublime Text 3/Packages/User/**/*theme
> git add Library
> git status
On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: Library/Application Support/Sublime Text 3/Packages/User/Default (OSX).sublime-keymap new file: Library/Application Support/Sublime Text 3/Packages/User/ElixirSublime.sublime-settings new file: Library/Application Support/Sublime Text 3/Packages/User/Package Control.sublime-settings new file: Library/Application Support/Sublime Text 3/Packages/User/Preferences.sublime-settings new file: Library/Application Support/Sublime Text 3/Packages/User/RESTer.sublime-settings new file: Library/Application Support/Sublime Text 3/Packages/User/SublimeLinter/Monokai (SL).tmTheme new file: Library/Application Support/Sublime Text 3/Packages/User/TextPastryHistory.sublime-settings new file: Library/Application Support/Sublime Text 3/Packages/User/ZenTabs.sublime-settings new file: Library/Application Support/Sublime Text 3/Packages/User/adrian-comment.sublime-macro new file: Library/Application Support/Sublime Text 3/Packages/User/json-pretty-generate.sublime-snippet new file: Library/Application Support/Sublime Text 3/Packages/User/raise-exception.sublime-snippet new file: Library/Application Support/Sublime Text 3/Packages/User/trailing_spaces.sublime-settings