2010-05-25 135 views
8

我在讀http://www.kernel.org/pub/software/scm/git/docs/v1.7.10/gitignore.html,用來解釋忽略模式的6個點似乎是描述了glob搜索語法的自定義變體。 我對Mercurial更加熟悉,它允許通過glob或regex模式明確地忽略,而不會問任何問題。混淆.gitignore語法

  • Git中有沒有類似的功能?
  • 任何人都可以指出我比Git手冊頁更詳盡的參考嗎?

最佳,
牛逼

+0

所有通配符都是在某個級別自定義的 - 它與shell相關。據推測,Mercurial也提供了它自己的版本,根據用戶的shell而改變行爲沒有什麼意義。 – Cascabel 2010-05-25 16:55:43

+1

謝謝,我已閱讀您的其他答案http://stackoverflow.com/questions/2899875/git-add-not-working-with-png-files/2900049#2900049這有助於清理一些事情。 但是,上面的註釋似乎與您和VonC的觀察相矛盾,即Git會回覆到用戶的shell glob語法允許的任何內容。 在您的評論之後重新閱讀時,手冊頁實際上提到排除依賴於fnmatch()和用戶的shell(最後兩點) – tmslnz 2010-05-25 18:16:01

+0

我不認爲這取決於用戶的shell。這裏的文檔有點令人困惑,你說得對,但在任何一種情況下都使用fnmatch。該文檔僅使用短語「shell glob」作爲fnmatch的一個更易讀的替代品。代碼從未實際調用用戶的shell。 – Cascabel 2010-05-26 13:31:05

回答

1

不完全。 它可以使用bash類似的語法,在那裏你可以指定這樣的東西:

*tmp_*~

是一樣的正則表達式:.*tmp_.*~

希望這將幫助你!

+1

不完全*什麼*?請記住:您的答案不一定會以最初發布時的順序出現,因此回覆以前的答案或評論並不是一個好主意。此外,即使這個問題可能會被修改,其他答案可能會被刪除。 – iconoclast 2012-06-20 20:47:01

+0

你是對的,謝謝! 我忘了這個事實... – 2012-06-21 08:02:53

3

有通過正則表達式排除沒有內置的方式。如果有的話,你可以在手冊頁上看到它。

+0

正如我在你之前的回答中提到的http://stackoverflow.com/questions/2899875/git-add-not-working-with-png-files/2900049#2900049(以及克里斯約翰森在同一個問題中的細節),所有基於模式的文件選擇委託給'fnmatch()'函數,不是這樣。 – VonC 2010-05-25 17:54:11

+0

不是真正的jefromi,'!pattern'否定匹配 – AD7six 2012-01-30 11:25:28

+0

@ AD7six:是的,** gitignore模式不是正則表達式**。 – Cascabel 2012-01-30 15:21:23