2017-06-01 96 views
1

我不太明白這個什麼是「!」在gitignore文件中做?

我從https://git-scm.com/docs/gitignore

可選前綴閱讀它的官方文檔「!」否定了這種模式;任何先前模式排除的匹配文件將再次包含在內。如果排除該文件的父目錄,則不可能重新包含文件。由於性能原因,Git沒有列出排除的目錄,因此無論它們被定義在何處,包含文件的任何模式都不起作用。在第一個「!」前放置一個反斜槓(「\」)對於以文字「!」開頭的模式,例如「!important!.txt」。

我有這個gitignore文件

/media/* 
!/media/xmlconnect 

這是什麼做的是什麼呢?我忽略了內部/media/所有子目錄,但我會做出一個例外,/media/xmlconnect(例如我不gitignoring嗎?)

所以基本上我gitignoring一切,但media/xmlconnect

回答

7

確切地說,這是用來忽略在該行之前被忽略的路徑。你的例子說明了用例很好。

您忽略了除xmlconnect之外的媒體內的所有內容。

+0

好的謝謝我需要澄清,因爲措辭讓我很困惑 – Kagerjay

+0

如果我扭轉了它,會發生什麼?例如'!/ media/xmlconnect'出現在'/ media/*'之前會不會把'media'文件夾裏的所有東西都搞亂了? – Kagerjay

1
/media/* 

以上忽略內部媒體

所有文件不過,如果你想使一個例外,不想忽略媒體/ xmlconnect然後使用!

!/media/xmlconnect 

當你做一個git add .,只有媒體/ xmlconnect將被添加到git的,裏面休息媒體所有其他文件不會被添加。

編輯:扭轉的.gitignore順序:

Git applies patterns in .gitignore in order of appearance,所以如果我們顛倒順序和 !/media/xmlconnect/media/*之前,它會忽略媒體目錄中的所有文件。

你可以看看這個issue瞭解提出的修復。

+0

如果我扭轉了它,會發生什麼?例如'!/ media/xmlconnect'出現在'/ media/*'之前會不會把'media'文件夾裏的所有東西都搞亂了?例如如果我做'git add .'它不會在'media'中添加任何內容 – Kagerjay

+0

我編輯了我的答案 – slal

相關問題