我有文件夾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