git倉庫創建之后,一般都會創建兩個分支開發分支dev和主干分支master。其中遠端倉庫一般checkout于master分支。master分支是穩定分支,用于發布版本,添加標簽等。dev分支不是穩定分支,與最新工作進度保持一致,協同工作都是用此分支。
由于遠端倉庫的當前分支是不能接收代碼提交的,故遠端倉庫通常都處于master分支。master的代碼提交需求極少(除了部分前期版本bug修復時可能需要直接提交到master分支)。故 git clone到本地的倉庫是對應于遠端的mater分支。
查詢當前分支關聯到哪個遠程分支:
git config -l | grep 'branch\.master'
開發工作需要在本地的dev分支進行,且此分支必須與遠端dev分支關聯。進行如下操作:
$git clone git_rul //克隆遠端倉庫
$git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/develop_branch
remotes/origin/master
$git checkout -b dev origin/dev //在本地建立與遠端開發分支對應的分支,最好保持分支名一致
$git branch --set-upstream-to origin/dev //建立本地分支與遠程分支的關聯
$git config push.default upstream //設置推送設置為upstream 表示默認push到關聯遠程分支。
通過如上設置后,在dev分支push 和pull直接操作遠程dev分支。
git config push.default幾個參數的含義:
- current 直接提交本地分支到遠端倉庫
- matching 提交到與本地此分支同名的遠端分支
- simple 只能提交到pull到當前分支的遠端分支
- upstream 提交到此分支所關聯的遠端分支
git checkout -b 與git checkout的差異
- git checkout -b 表示基于當前分支創建一個分支,然后切換到該分支
- git checkout (遠程分支名) 表示直接創建一個與遠程分支同名的本地分支,且此分支與當前分支沒有關系。
故添加 -b 參數的分支創建的分支與當前分支一致,必須手動關聯遠程分支,如此就可能出現遠程分支與當前分支存在差異,需要進行合并。而不加 -b 參數則沒有此問題。