2015-05-19 53 views
0

我試圖排除除了那些我需要以下.gitignore配置中的所有文件:Gitignore雙星模式不起作用

*.* # Ignore all files 
*~ # Ignore temp files 
\#* # Ignore temp files 

!.gitignore 
!*.conf 
!**/*.conf 

然而,當我執行git status./postgresql/9.3/warm-standby/postgresql.conf沒有顯示文件。我如何解決我的.gitignore

的Git版本2.1.4

+0

看一看http://stackoverflow.com/questions/9162919/whitelisting-and-subdirectories-in-git –

回答

1

首先:信貸@EtanReisner爲認真尋找到這一點,並@RetoAebersold提供正確的link

的問題是,用下面的語句(不是屬於你.gitignore),你黑名單文件和目錄

* 

現在,如果您像使用*.*那樣使用,通常不會出現問題,因爲大多數目錄不包含點(.)。然而,你的確如此:

*   .* 
postgresql/9.3 

所以會發生什麼是所有的目錄都列入黑名單。爲了能夠在目錄中添加文件,您首先需要將這些目錄列入白名單。您可以使用線索做到這一點:

!*.*/ 

換句話說,將以斜線結尾的所有內容列入白名單。

現在你可以白名單的文件,以及:

!*.conf 

注意,白名單!**/*.conf是沒有必要的(這甚至可能是不允許的,特別是因爲兩個連續的星號**在混帳1.8只啓用*。 )。

一個更好的配置文件,從而讀取:

*.* # Ignore all files 
*~ # Ignore temp files 
\#* # Ignore temp files 
!*/ 
!*.*/ 

!.gitignore 
!*.conf 
+0

這些建議的工作,如果我加' **/*'到我的'.gitignore','*。*'似乎只排除當前目錄中的文件。這將是很好的更新答案 –

+0

通常'*。*'將禁用所有*文件/目錄用點。你能再詳細一點嗎? –

+0

我有很多需要在子目錄中排除的文件。 '*。*'似乎不排除它們,因此需要'**/*'或'**/*。*'才能遞歸工作。 –