我創建了一個名為 basic 的檔案,并創建了一個名為 new 的分支。移動到新分支后,我想切換到主分支,因此我使用了 git checkout master。不幸的是,終端宣告沒有主分支。
(base) Dun-Yan:basic ongdunyan$ git checkout master
error: pathspec 'master' did not match any file(s) known to git
這是 git 狀態:
(base) Dun-Yan:basic ongdunyan$ git status
On branch new
nothing to commit, working tree clean
如果你們能幫助我,我將不勝感激,和平:)
uj5u.com熱心網友回復:
這意味著,是的,確實沒有名為master. 不要求任何 Git 存盤庫具有任何特定的分支名稱——您可以擁有一個完全沒有分支名稱的存盤庫——因此這不是錯誤,除非您當然希望它是一個。??
使用git branch列出所有現有的分支名稱。在一個新的空存盤庫中,這不會列印任何名稱,因為沒有分支,但您的git status輸出表明您至少有一個分支名稱,特別是new.
使用git branch -r列出所有現有的遠程跟蹤名稱。這應該讓你問:等等,什么是遠程跟蹤名稱? (特別是因為 Git 將其稱為遠程跟蹤分支名稱:我洗掉了分支這個詞,因為這些名稱實際上根本不是分支名稱。)遠程跟蹤名稱是您的 Git 記住其他存盤庫分支名稱的方式。
這里的關鍵見解是您的分支名稱是您的。他們不是別人的分支。就像您的名字可能是 Sue、Rajeesh、Quentin 或其他任何名稱一樣,這并不意味著每個名為 Sue(或您的任何名字)的人都是您。您的 Git 存盤庫有自己的分支名稱。您可能希望自己的與其他人的相匹配,但這只是您的愿望,而不是 Git必須做的。
當你的 Git——你的 Git 軟體在你的 Git 存盤庫上運行時——與其他一些 Git(另一個存盤庫上的軟體)交談,這兩個 Git 將進行協商,并且你的 Git 將能夠看到他們的提交和他們的分支(在任何程度上無論如何,他們愿意向他們展示)。當您運行 .git 時,您的 Git 將獲得它們的分支和提交git fetch。但是您的 Git 會將他們的分支名稱轉換為您的遠程跟蹤名稱,因此如果他們有一個名為 的分支fred,您將獲得一個具有其他名稱的遠程跟蹤分支。
為了讓您的 Git 與另一個 Git 對話,您將使用 Git 稱為遠程的. 遠程只是一個短名稱,例如origin:我們讓 Git在這個短名稱下存盤一個URL,然后我們運行:
git fetch origin
來指引我們的Git來查找短名,origin中,找到長URL(ssh://[email protected]/some/path/to/repo.git或https://github.com/some/path/to/repo.git或其他),并連接那里看看他們的分支機構和提交。
看到origin名為 的分支后fred,如果您的 Git 被指示將其帶過來(這是默認設定),那么您將在您的存盤庫中找到遠程跟蹤名稱 origin/fred。這表示在遠程named上看到的分支名稱。fredorigin
該git branch -r命令列出了這些遠程跟蹤名稱。使用git branch -a,您的 Git 將列出您的分支名稱和遠程跟蹤名稱,以便您能夠看到您new的origin/fred. 無論出于何種原因,1 都會 git branch -r將此列印為origin/fred并將其git branch -a列印為remotes/origin/fred。
現在,您可能希望 Git創建一個新的分支名稱,您可以這樣做。但是,您應該首先閱讀提交和分支名稱的實際作業方式。Git 僅使用名稱2來查找提交:真正重要的是提交及其哈希 ID(或正式的“物件 ID”)。
1這完全是不一致的。兩種形式都有效:如果您愿意,您可以撰寫origin/fred或remotes/origin/fred。但是輸出格式的這種差異沒有充分的理由。實際的全名origin/fred是refs/remotes/origin/fred,如果要努力插入該remotes/部分,為什么不一路輸入無歧義的refs/remotes/origin/fred版本呢?但這只是一個旁白。
2嗯,主要是比only更準確,因為分支名稱還參與branch.*配置中設定的鍵值查找。
uj5u.com熱心網友回復:
master在簽出到另一個分支之前,您必須至少進行一次提交,否則分支 HEAD 幾乎不存在并且 git 無法簽出到“無處”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/336979.html
