2013-02-12 125 views
0

是的,這看起來像一個重複,因爲我可以看到這已被問幾次之前。但是我看到的其他答案都沒有幫助我。.gitignore沒有遵循一些規則(GitHub)

我有一個Umbraco安裝,我想存儲在Git中(確切地說是GitHub),我顯然想要省略Umbraco創建的日誌文件和臨時文件。

我有我的.gitignore文件以如下:

App_Data/TEMP/ 
App_Data/Logs/ 
App_Data/ClientDependency/ 
App_Data/Preview/ 

但是,這是行不通的。這些目錄中的文件仍然被添加。

我試圖把一個星號上月底(文檔說,它不應該需要 - 它僅使用文件涉及在該目錄中,如果它是有)

我保證沒有每行末尾有空格。

我已經仔細檢查過大小寫的目錄名稱。

我已經從一種方式轉換到另一種方式的斜線。

如果我從存儲庫的根目錄輸入完整路徑,它確實有效,但這太具體了。 (雖然我現在要用它作爲解決方案)。如果我們創建新的基於Umbraco的項目,我希望能夠輕鬆地重用.gitignore文件。

沒有放在完整路徑中的其他規則(例如NuGet的包文件夾)正在被正確處理。

packages/ 

該規則的作品 - 我真的沒有看到區別。

任何人都可以看到我在做什麼錯在這裏?

UPDATE

的作品的完整路徑是這樣的:

/src/Company.Client.Web/App_Data/Logs/ 
/src/Company.Client.Web/App_Data/TEMP/ 
/src/Company.Client.Web/App_Data/ClientDependency/ 
/src/Company.Client.Web/App_Data/Preview/ 

(我已經模糊了一點,但是這還有什麼可現在)

這裏是GitHub上對於Windows顯示: Here's what GitHub for Windows is showing

Upd吃2

.git文件夾位於存儲庫的根目錄,因此/。換句話說,D:\github\RepositoryName\.git\,作爲比較,src文件夾是D:\github\RepositoryName\src\

+3

從這些文件夾的文件已經在你的倉庫? – 2013-02-12 09:51:54

+0

不,他們不是。我也檢查過。 :-) App_Data文件夾僅包含存儲庫中的Umbraco.config,沒有別的。 – 2013-02-12 09:59:33

+0

請告訴我們完整的路徑,告訴我們你的git倉庫的根目錄。 – 2013-02-12 10:00:47

回答

5

當您指定的文件名或在的.gitignore文件夾,則忽略它,不管它出現在你的目錄結構。這就是爲什麼packages/有效。

同樣不是像App_Data/TEMP/部分路徑真。

你可以做的是:

*/*/App_Data/TEMP/ 

這將忽略App_Data/TEMP不管兩個父目錄的命名方式。但它會爲這些文件夾在層次結構的這種精確的深度纔有效,也就是說,它會忽略這些:

  • 的src/Company.Client.Web/App_Data文件/ TEMP
  • 的src/Company.Client2.Web/App_Data文件/ TEMP

但它不會忽略這些:

  • 的src /的App_Data/TEMP
  • 的src/Company.Client.Web /樣機/ App_Data文件/ TEMP

這是由設計在the documentation指出:

[當圖案包含斜槓但不與一個結束],GIT中對待圖案作爲適合於由消費的fnmatch殼水珠(3)與所述FNM_PATHNAME標誌:在模式通配符將不匹配一個/中的路徑名。例如, 「文檔/ *。HTML」 匹配 「文檔/ git.html」,而不是 「文檔/ PPC/ppc.html」 或 「工具/ PERF /文檔/ perf.html」。

+0

這很有效,對於我想要的不太完美,但它更適合。我想我們可以說所有的Umbraco項目都在這個層面上。我們的風格是一個src目錄,其下有項目,所以如果遵循這個目錄,它就可以很好地工作。 – 2013-02-12 11:28:56

+0

@ColinMackay:不幸的是,這是您能夠獲得的最佳選擇,正如您從引用的文檔中看到的那樣。 – 2013-02-12 11:29:49

+0

謝謝 - 非常感謝您的幫助。 – 2013-02-12 11:31:52

-1

這似乎是一個簡單的錯誤。我猜你在將日誌文件放入回購庫後已經設置了.gitignore文件。

但實際上,.gitignore文件用於避免一些未跟蹤的文件,但是一旦文件已經添加到任何提交一次,它只是通過.gitignore檢查。

如果你想申請這個。gitignore檢查,儘量的git RM yourfilesgit的承諾-m「你提交的名字」,然後他們將永遠不會再被跟蹤。在嘗試此操作之前,請確保您有它們的副本。

+1

對不起,這些文件不是,也不是在存儲庫中。我確信他們在我犯下之前已被移除。顯然,我不希望手動刪除它們,或者顯式包含每次我要提交時我要添加的文件。 – 2013-02-12 11:14:17

6

自從git 1.8.2 (March, 8th 2013),你現在可以使用**

的模式在.gitignore.gitattributes文件可以有**/,因爲匹配0或多個級別子目錄的模式。

E.g. 「foo/**/bar」與「foo」本身或「foo」的子目錄中的「bar」匹配。

所以,你想:

**/App_Data/TEMP/ 
**/App_Data/Logs/ 
**/App_Data/ClientDependency/ 
**/App_Data/Preview/ 
+0

看到這在http://stackoverflow.com/a/16165581/1233435。 – bbodenmiller 2014-03-06 09:19:36

相關問題