我想忽略存儲庫中的所有文件,除了發生在bin
子目錄中的文件。我嘗試添加以下到我的.gitignore
:如何讓Git忽略除子目錄以外的所有內容?
*
!bin/*
這不會收到預期的效果,但是:我創建的bin/
內一個新的文件,但這樣做git status
仍顯示nothing to commit (working directory clean)
。
有什麼建議嗎?
我想忽略存儲庫中的所有文件,除了發生在bin
子目錄中的文件。我嘗試添加以下到我的.gitignore
:如何讓Git忽略除子目錄以外的所有內容?
*
!bin/*
這不會收到預期的效果,但是:我創建的bin/
內一個新的文件,但這樣做git status
仍顯示nothing to commit (working directory clean)
。
有什麼建議嗎?
這忽略根文件&根目錄,然後取消忽略根bin目錄:
/*
/*/
!/bin/
這樣,你得到所有的bin目錄包括子目錄及其文件。
出於某種原因,這並不始終如一地爲我工作。我有兩行'/東西/'和'!/材料/特定/',但它仍然忽略/材料/特定/ – 2013-11-18 00:00:12
@ LB--我也有類似的問題,'混帳檢查忽略-v'告訴我這是因爲'〜/ .gitignore' – 2014-08-25 12:32:45
@gurneyalex我發現它自我修復,如果我刪除本地回購,並重新克隆它,它必須是一個錯誤。 – 2014-08-25 18:44:30
你唯一的問題是bin
目錄本身不匹配bin/*
模式,所以git甚至不在bin
目錄中查找。
有兩種解決方案值得思考。
.gitignore
:
*
!/bin/
!bin/*
或
.gitignore
:
*
!/bin/
bin/.gitignore
:
!*
我喜歡的S作爲第一個解決方案的第二個解決方案不會停止忽略bin
目錄中不在名爲bin
的子目錄中的文件。這可能會或可能不會影響您的情況。
我認爲更好的辦法是用斜線啓動模式定位每個圖案頂端的git目錄:
/*
!/public_html
!/.gitignore
而不是忽略所有的文件,它只會忽略頂層的文件,而不是在你不想忽略的目錄中。
這.gitignore
作品對我來說:
*/
/*
!bin/
這裏如何在某個目錄不顧一切exept一個目錄 「MY_SUPER_DUPER_TEMPLATE_directory」
結構:/的Bitrix /模板/ MY_SUPER_DUPER_TEMPLATE_directory
/*
!/bitrix
/bitrix/*
!/bitrix/templates
/bitrix/templates/*
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
*.DS_Store
*.gitignore
這解決了我的子子目錄。謝謝 – frostymarvelous 2015-03-03 00:06:50
的作品。什麼東西不傷害眼睛? – ed22 2016-06-01 04:58:43
這工作奇蹟,取消了我已修改的laravel供應商包!謝謝你,爲了包括一個目錄,然後,排除它的內容,然後,包括所需的子目錄等原理,你爲我節省了很多頭痛 – 2017-05-04 07:48:46
您必須在途中排除一切目的地,但你必須包括目的地:
/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore
忽略除tsp目錄外的所有內容,忽略tsp目錄中的所有內容,除了src目錄...
+1。我最終在我的項目中使用了這個答案。 – 2013-09-06 15:54:55
從官方git doc,其中一個例子說:
例排除除了特定的目錄富/條(注意/ *一切 - 沒有斜槓,通配符也將排除foo中的一切/條):
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
有關前導斜槓的說明:When to use leading slash in gitignore。
可能重複的[.gitignore排除文件夾,但包括特定的子文件夾](http://stackoverflow.com/questions/5533050/gitignore-exclude-folder-but-include-specific-subfolder) – 1615903 2017-03-30 13:51:16