2012-02-04 54 views
8

我想做類似git add *.java的事情,不要因爲其中一個文件與.gitignore匹配而讓它嘔吐。使用git,我該如何執行git add,並仍然忽略.gitignore中的模式?

例如: 在我的目錄我有

在最後三個文件,只是由我創建
ignored.java 
something.java 
somethingelse.java 
somethingevenmoreelse.java. 

。然後我想做git add *.java

並讓它添加這三個文件。換句話說,而不是給我

The following paths are ignored by one of your .gitignore files: 
ignored.java 
Use -f if you really want to add them. 
fatal: no files added 

...我寧願它會忽略.gitignored文件,並添加其餘。

+0

使用的zsh,發現標籤完成真正的力量! – Simon 2012-02-04 21:23:41

+0

請解釋@Simon? – 2012-02-04 21:25:36

+0

在zsh中,如果你輸入'git add s * .java'並按tab,它將自動完成以's'開始的三個.java文件。另外,如果您只需鍵入'git add'並按Tab鍵,則它將只完成非掛起的文件。 – Simon 2012-02-04 21:33:02

回答

11

如果引用glob模式,那麼它將被git而不是shell解釋,並且在添加其餘的錯誤之前它將忽略被忽略的文件。

git add '*.java' 

或者:

git add \*.java 
+1

這絕對是正確的路要走。 Git將解釋文件名參數中的全局模式,它會適當地應用gitignore模式而不會引發錯誤。被拋出的錯誤是因爲你明確地將一個被忽略的文件傳遞給'git add',並且它認爲你必須完成了你並不想做的事情。 – 2012-02-04 22:32:15