gitlab中對master分支是設定為protected的,對於developer身份的成員需要單獨拉一個分支讓其開發,等到穩定後來merge到master分支中,但是這個時候我們如何在本地根據developer分支來開發,又如何pull developer分支到本地,在push代碼到developer分支呢。 建立developer分支
這裡注意如果你遠程分支刪除後,你執行git branch -a還是會存在的,這個時候你執行一下git fetch -p就可以了。 將遠程代碼clone到本地
拉到本地後,我們的分支資訊如下:
58deMacBook-Pro:ResponseTimeTool wuxian$ git branch -a* master remotes/origin/developer remotes/origin/master
這個時候我們是在主分支master開發的,所有的git pull和git push都是在master分支上操作的。但是我們不想這樣做。 切換到developer分支上開發
58deMacBook-Pro:ResponseTimeTool wuxian$ git checkout -b local_developer remotes/origin/developerBranch local_developer set up to track remote branch developer from origin.Switched to a new branch 'local_developer'
這個時候我們已經切換到local_developer分支中開發,且該分支是由遠程分支developer產生的。 git pull
58deMacBook-Pro:ResponseTimeTool wuxian$ git pullremote: Counting objects: 3, done.remote: Compressing objects: 100% (3/3), done.remote: Total 3 (delta 2), reused 0 (delta 0)Unpacking objects: 100% (3/3), done.From 96978fb..8a02689 developer -> origin/developerUpdating 96978fb..8a02689Fast-forward build.gradle | 1 + 1 file changed, 1 insertion(+)
我在gitlab的頁面上developer分支上手動了修改某處,然後pull,顯示是同developer拉取下來了,說明我們的git pull是成功的。 git push
但是我們執行git push就出問題了:
58deMacBook-Pro:ResponseTimeTool wuxian$ git pushTotal 0 (delta 0), reused 0 (delta 0)To git@gitlab.58corp.com:com.wuba.wuxian.autotest/ResponseTimeTool.git * [new branch] local_developer -> local_developer
它會預設產生一個新的分支,名字和我本地分支一樣,這是不正確的,我們要push到developer分支上的。
我們需要顯示的執行push到的分支:
58deMacBook-Pro:ResponseTimeTool wuxian$ git push origin local_developer:developerCounting objects: 1, done.Writing objects: 100% (1/1), 175 bytes | 0 bytes/s, done.Total 1 (delta 0), reused 0 (delta 0)To 8a02689..1e27554 local_developer -> developer
這樣就ok了。