在命令行中使用 Git 進行
git push -u origin main
操作時遇到報錯error: src refspec main does not match any。
另一個錯誤信息是:error: failed to push some refs to 'https://github.com/xxx/xxx.git'.
這是在一個新設備操作時遇到的問題,之前沒有注意過,看了下發現是版本遺留問題。
目錄
推送分支
檢查分支
創建分支
刪除分支
推送分支
當我們執行?git push -u origin main
命令時,其會將本地的 main
?分支推送到遠程倉庫 origin
,并設置 origin
為該分支的默認上游(upstream)遠程分支。
git push -u origin main
-
git push
:這是 Git 中用于將本地分支的內容推送到遠程倉庫的命令。 -
-u
:這個選項是--set-upstream
的縮寫,用于設置遠程分支作為本地分支的上游分支,可以省略。這意味著以后當使用git pull
或git push
命令時,Git 會自動知道應該與哪個遠程分支交互。 origin
:這是遠程倉庫的默認名稱。當你克隆一個倉庫時,Git 會自動創建一個名為origin
的遠程倉庫引用。-
main
:這是想要推送的本地分支的名稱。
問題就出現在分支名稱不匹配上。在 Git 的早期版本中,master
是默認的主分支名稱。而在 Git 的較新版本中,主分支通常被命名為 main
,具體取決于倉庫的設置。
檢查分支
既然如此,我們需要用branch命令檢查一下本地的分支:
git branch
可以看到,這個設備安裝Git后默認的本地分支名稱為master 。
創建分支
于是,為了和遠程默認的main分支匹配,需要使用checkout命令切換到main分支,若本地不存在main分支,則會創建一個名為main的本地分支并切換到該分支:
git checkout -b main
-
git checkout
:這是 Git 中用于切換分支或恢復工作目錄文件的命令。 -
-b
:這個選項告訴 Git 創建一個新分支,可以省略。 -
main
:這是新分支的名稱。在這個例子中,新分支被命名為main
。
checkout后再次使用branch命令檢查一下本地的分支:
可以看見已經創建并切換到main分支,再執行pull命令即可成果推送
刪除分支
使用 git branch -d
命令可以刪除 master
分支:
git branch -d master
?如果 master
分支有未合并到其他分支的更改,Git 會阻止刪除:
在這種情況下,可以使用 -D
選項強制刪除:
git branch -D master
使用?git branch
?命令檢查,可見master分支已被刪除: