2014-10-01 86 views
1

我有一個奇怪的情況 - 我的git的是前直到一小時工作的罰款左右,但現在當我嘗試運行Git的未知開關「C」

git add * --all 

我得到一個錯誤說錯誤:未知開關`C'

下面是我得到的輸出。我剛剛從回購有所改變,然後我開始得到這個錯誤。試圖戳了一下,發現錯誤是由於*符號。如果我刪除,工程....

$ git add * --all 
error: unknown switch `C' 

usage: git add [options] [--] <pathspec>... 

-n, --dry-run   dry run 
-v, --verbose   be verbose 

-i, --interactive  interactive picking 
-p, --patch   select hunks interactively 
-e, --edit   edit current diff and apply 
-f, --force   allow adding otherwise ignored files 
-u, --update   update tracked files 
-N, --intent-to-add record only the fact that the path will be added later 

-A, --all    add changes from all tracked and untracked files 
--ignore-removal  ignore paths removed in the working tree (same as --no-all) 
--refresh    don't add, only refresh the index 
--ignore-errors  just skip files which cannot be added because of errors 
--ignore-missing  check if - even missing - files are ignored in dry run 
+4

你有一個文件名爲'-C',所以'加*'變成'加-C文件1文件2 ...' 。 – torek 2014-10-01 15:31:36

+0

感謝@torek,找到該文件並將其刪除。如果其他人正在尋找類似的東西,請使用rm - -c [ - 防止命令解析參數]來刪除文件。 – 2014-10-02 07:35:17

回答

4

你不應該有選項(如--all)像參數(如文件名)之後。因此,嘗試圍繞切換它們:

git add --all * 

此外,如果文件名帶有負開始,它會被誤解釋爲一個選項(文件-Clown樣子選項-C -l -o -w -n對命令行程序)。爲了緩解這個你可以使用--停止選項解析:

git add --all -- * 
+0

雖然你是正確的,但正如Mureinik注意到'--all'和'* '沒有意義。也許你想提一提。 – 2014-10-02 10:50:53

1

開關應該來的文件列表前 - 我猜你有一個名爲C文件,該文件的*被shell擴展到。但是請注意,與--all你不需要提供文件列表:

git add --all