Git學習:(三)分支管理

通過分支管理能夠保證不同用戶提交的代碼儘可能少的發生衝突,提高團隊協作的效率。

一、分支的創建與合併

1.創建並切換到new分支。

創建和切換

git checkout -b new
# git checkout命令加上-b表明創建並切換到分支 new,相當於下面兩條指令的功能:
git branch new
git checkout new

git checkout 分支名字,可實現不同分支的切換

當前分支的查看:git branch

該命令會列出所有的分支,當前分支前面會標一個*號。
分支創建好之後就可以在當前分支上正常的修改和提交。

2.合併分支

現在將new分支的內容合併到master分支上。

  • 切換到master分支:git checkout master
  • 將new分支合併至master
    git merge new
    Updating 4ebf9d0…2265583
    Fast-forward
    h.txt | 1 +
    1 file changed, 1 insertion(+)

git merge命令用於合併指定分支到當前分支。Fast-forward指的是快速模式,並不是所有的合併都能使用快速模式。(這種模式下,刪除分支後,會丟掉分支信息)

  • 合併完成後就可以刪除new分支了:git branch -d new

3、禁用fast forward模式合併分支

通常,合併分支時,如果可能,Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支信息。
如果要強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支信息。

git merge --no-ff -m "merge and no-ff" new

二、bug的修復與合併

當我們在new分支開發的時候,可能主分支會有bug需要處理,這時候需要將當前工作區清空再切換到主分支解決bug,解決完bug回來再繼續工作。這時候可以使用以下指令保存當前分支的工作區:

git stash

然後取解決bug,bug解決了回到new分支使用git stash list查詢已經保存的工作現場,之後使用git stash apply stash@{版本號} 恢復指定版本的stash。但是使用git stash apply 方式一般還需要使用git stash drop來刪除已恢復的版本。
另一種方式是使用git stash pop,恢復的同時把stash內容也刪了。


但是有個問題,我們將master上的bug修復了,但此bug在new分支中依然存在。這時候我們可以在new分支中使用git cherry-pick 版本號 ,版本號指的是修改bug時提交的版本。這樣就不必在new分支上再改一遍相同的bug了。有可能會出現衝突,但衝突的地方會標記清楚的,我們可以選擇哪些保留,哪些丟棄。


分支的強行刪除:git branch -D 分支名

三、本地分支推送到遠程分支

本地的分支如果不推送到遠程,其他人是無法看見的。從本地推送分支,使用git push origin branch_name;如果推送失敗,先用git pull抓取遠程的新提交,合併後解決衝突,然後提交。


分支推送,就是把該分支上的所有本地提交推送到遠程庫。推送時,要指定本地分支,這樣,Git就會把該分支推送到遠程庫對應的遠程分支上:

git push origin branch_name
推送失敗的解決辦法
  • 1.如果推送失敗,可能是該分支在遠程上領先於本地分支。
  • 2.在本地創建和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致。
  • 3.建立本地分支和遠程分支的關聯,使用git branch --set-upstream branch-name origin/branch-name
  • 4.使用git pull將最新的提交從分支抓下來,如果有衝突,要先處理衝突。然後,在本地合併,解決衝突後再推送到遠程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章