這就是爲什麼你收到錯誤信息,你是。
git checkout
可以做兩件事之一。如果你只是指定一個分支並且不指定任何路徑,那麼它會將你當前的分支切換到你指定的分支。
git checkout mybranch # switch to branch 'my branch'
如果提供一些路徑,Git會結帳無論是從指數的路徑,或者,如果你指定一個分支,從給定的分支。
git checkout myfile # checkout 'myfile' from index
正如您所看到的,存在潛在的不明確性。如果您有一個名爲myfile
的分支或名爲mybranch
的文件,會發生什麼?
git解決此歧義的方式是它測試參數以查看它是否首先與分支匹配,如果不是,則它假定該參數引用文件。如果你有一個同名的分支和文件,你可以強制git把這個參數作爲一個文件用這種語法來處理。
git checkout -- myfile # treat 'myfile' as a file
的-b
選項,這將創建一個新的分支,當您使用的checkout
分支開關的形式,而不是當你檢查出從索引中指定的文件纔有效。
git checkout -b newbranch myfile # Illegal. I can't use `-b` when
# I'm checking out files.
如果您嘗試git checkout -b newbranch origin/BRANCH
,你會得到這個錯誤就意味着origin/BRANCH
不匹配,你有這麼混帳假定您必須指的是文件中的任何分支的名稱。
要顯示您可以執行的遠程分支引用git branch -r
。如果您沒有提及您認爲應該存在的分行,則可能需要執行git fetch
以從遠程獲取分行。
如果您提供-b
但沒有分支名稱以關閉新分支,git默認爲使用HEAD
,即您當前簽出分支所處的提交。
git checkout -b origin/BRANCH
這將創建一個新的當地分支叫origin/BRANCH
根據您目前的承諾。充其量,這可能會引起你一些困惑,聽起來並不像你想要的那樣。
非常感謝,非常完整的答案。 – saeedgnu 2011-06-11 12:47:16