2013-10-18 146 views
5

我想忽略除www目錄中的.htaccess文件以外的所有文件。讓.gitignore不要忽略頂級目錄中的.htaccess文件

我有這樣的:

# Ignore everything in this directory 
* 
# Except this file 
!.gitignore 
!/www/.htaccess 

而且我也試過這樣:

# Ignore everything in this directory 
* 
# Except this file 
!.gitignore 
!www/.htaccess 

當我運行git status我沒有看到的.htaccess爲新添加的文件。我曾嘗試提交.gitignore文件。依然沒有。我錯過了明顯的東西,不是嗎?

更新

我也曾嘗試這些:

# Ignore everything in this directory 
* 
*/\.htaccess 

# Except these files 
!.gitignore 
!www/\.htaccess 

# Ignore everything in this directory 
* 
*/.htaccess 

# Except these files 
!.gitignore 
!www/.htaccess 

回答

9

我嘗試一些作者我的機器上有足夠的步驟,嘗試它們並檢查它們是否適合您。

cd ~/Desktop/test 
mkdir www && touch .gitignore www/.gitkeep www/.htaccess www/file1 www/file2 
git init && git add www/.gitkeep && git commit -m "gitkeep to make www trackable" 

git status將向您現在

.gitignore 
www/.htaccess 
www/file1 
www/file2 

,在你的.gitignore文件,添加如下兩項

www/* 
!www/.htaccess 

做一個git status現在顯示

.gitignore 
www/.htaccess 

您現在可以使用git add .添加這兩個文件並提交它們。

而且,一旦你確信上述命令的工作,你可以刪除www/.gitkeep我在我的例子生成(也有人加入,以保持www可追蹤,Git不會版文件夾),並添加www/.htaccess,而不是減少開銷的冗餘文件。

1

你試過:

*/.htaccess 
!www/.htaccess 
+0

試過。承諾.gitignore,仍然沒有看到.htaccess即將到來 – phirschybar

2

以我自己的經驗,下面的解決方案比接受的答案簡單得多。

以下內容添加到您的.gitignore文件

www/* 
!www/.htaccess 

現在你做!

闡釋

要打破它www/*忽視了「www」的目錄,但不是目錄本身的所有乘客,如在本/www命令。

接下來我們聲明我們明確的例外!www/.htaccess,正如您在您的問題中嘗試的那樣。

它只需要兩行在.gitignore文件中,它就像一個魅力。

+0

謝謝,這是問題! 'www'和'!www/.htaccess'意味着Git被告知忽略整個文件夾「www」,所以即使你允許它也不會看到.htaccess文件。通過將第一個語句改爲www/*'(意思是「追蹤文件夾www本身,但不是其中的任何文件」),它允許第二個語句('!www/.htaccess')找到htaccess文件。要做到這一點,我不得不做相當於'git add www'來開始跟蹤文件夾,然後我看到htaccess顯示在分段中(並且沒有其他文件,就像我打算的那樣)。 – buggy3