2014-01-14 37 views
10

我有一個包含在icons/目錄中的SVG圖像的回購。試圖添加這些圖像回購失敗,和Git並顯示錯誤消息抱怨:因爲圖標Git忽略圖標文件?規則

The following paths are ignored by one of your .gitignore files: 
public/img/icons/my-icon.svg 
Use -f if you really want to add them. 

當我使用git-check-ignore追查被忽略的文件,我發現,從我的.gitignore_global文件Icon?規則是罪魁禍首。

$ git check-ignore -v public/img/icons/my-icon.svg 
/Users/ryanatallah/.gitignore_global:42:Icon? public/img/icons/my-icon.svg 

什麼可能是這個問題的優雅解決方案?

+0

你爲什麼不乾脆從.gitignore_global中刪除'Icon?'這一行或修改它只匹配你想忽略的內容? – Njol

+0

因爲我仍然希望Git忽略'Icon?'文件。 –

+0

當你說你想忽略**圖標**文件,是否有另一種模式,而不是'Icon'?例如 - '* .ico' – TheCodeArtist

回答

17

原來,這個問題是由Git bug造成的,其中Icon? gitignore規則也匹配icons/等目錄。解決方法是在最後用正確的控制字符(這是一個回車符)編寫規則。 This question解釋了Icon?文件是爲具有自定義圖標的目錄自動創建的。

解決方案,如this blogpost中記錄的是正確地將規則寫入我的全球gitignore文件與回車。下面的Ruby腳本的伎倆:

>> f = File.open(".gitignore", "a+") # append 
=> #<File:.gitignore> 
>> f.write("Icon\r\r") 
=> 8 
>> f.close 
=> nil 
+0

感謝您的支持!我的同事和我在這一張上拉了半個小時。 –

+0

OS X:在使用這種技術後,我嘗試在'.gitignore'中添加另一行,但它與同一行的'Icon'混合在一起。我通過刪除'Icon'條目並重新添加它,繞過了這個問題,這次只使用'f.write(「Icon \ r \ r \ n」)'。之後,我可以添加另一個條目('echo「file_to_ignore」>> .gitignore')。 –

+0

'f.write(「Icon [\ r] \ n」)似乎更可取。請參閱[這裏](https://stackoverflow.com/a/33974028/192740)爲什麼。它也可以防止Arnaud的問題。 – cstork

2

要從你需要使用!前綴父.gitignore文件重寫規則,例如加入本地.gitignore文件:

!Icon