【Git教程】Git教程之分支管理

  在前一篇文章中,主要針對Git本地倉庫和遠程倉庫的基本操做命令進行了簡要介紹,本文主要集中介紹Git的另外一個主要的特色:分支管理和多人協做。html

什麼是分支管理

  當一個任務須要多人協做完成時,每一個人能夠建立一個屬於本身的分支,只有本身能夠看到,每一個人在本身的分支上完成修改提交等任務,最終開發完畢時,將每一個人的分支合併到原來的主分支,這樣能夠互不影響,而且保證了安全。git

建立和合並分支

  在一開始,git倉庫只有一個主分支(master),HEAD指向master,master指向最新的提交;當建立了一個新的分支(好比叫dev)後,增長一個相似於master的指針dev,而且更改HEAD指向dev。安全

<div align=center> ![](https://img2018.cnblogs.com/blog/1608161/201904/1608161-20190410102159504-216886549.png) </div>網站

  這樣,當在當前分支修改時,就是在移動dev指針,最後能夠經過合併將分支合併到master分支。spa

使用命令以下:
建立分支: $ git branch <branch_name>
切換分支: $ git checkout <branch_name>
建立+切換:$ git checkout -b <branch_name>
查看當前分支: $ git branch //列出全部分支,當前分支前加*
合併某分支到當前分支: $ git merge <branch_name>
刪除分支: $ git branch -d <branch_name>

解決衝突

當Git沒法自動合併分支時,就必須首先解決衝突,解決衝突之後再提交便可完成合並。 解決衝突就是把Git合併失敗的文件手動編輯爲咱們但願的內容,而後再進行提交,使用git log --graph能夠看到分支合併圖。指針

分支管理策略

Git的分支功能十分強大,在團隊開發中應該充分應用,合併分支時,加上--no-ff 參數就能夠用普通模式合併,合併後的歷史有分支,能夠看出來作過合併,而fast forward看不出來曾經作過合併。 團隊合做時,master分支應該相對穩定,每一個人的工做在本身的分支上完成。code

<div align=center> ![](https://img2018.cnblogs.com/blog/1608161/201904/1608161-20190410102224352-1262130080.png) </div>orm

Bug分支和Feature分支

這兩個分支主要是在軟件開發中使用。htm

  • Bug分支:當要修復軟件開發中的一個Bug時,一個很好的辦法是經過建立一個新的分支來進行修復,修復完成後進行合併,刪除Bug分支,而若是當前手頭工做尚未完成時,能夠先使用命令git stash將工做現場進行保存,而後去分支裏修復bug,修復完成後,再經過git stash pop恢復工做現場。
  • Feature分支: 當軟件開發中臨時增長一個新功能時,一樣最好的辦法是用一個新的分支來進行開發,完成後再合併,相似於Bug分支,若是想要丟棄一個沒有被合併過的分支,能夠經過命令git branch -D <branch_name>來強行刪除。

多人協做

多人協做的工做模式:blog

  • 首先,能夠試圖用git push origin <branch-name>推送本身的修改;
  • 若是推送失敗,則由於遠程分支比你的本地更新,須要先用git pull試圖合併;
  • 若是合併有衝突,則解決衝突,並在本地提交;
  • 沒有衝突或者解決掉衝突後,再用git push origin <branch-name>推送就能成功!

  注意:若是git pull提示no tracking information,則說明本地分支和遠程分支的連接關係沒有建立,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

  查看遠程庫信息的命令git remote -v   推送本地分支的命令git push origin <branch_name>   建立和遠程庫對應分支的命令git checkout -b branch-name origin/branch-name

Rebase

  • rebase操做能夠把本地未push的分叉提交歷史整理成直線;
  • rebase的目的是使得咱們在查看歷史提交的變化時更容易,由於分叉的提交須要三方對比。

標籤管理

  標籤至關於版本庫的一個快照,或者說是版本號的一個別名,和某個commit綁定在一塊兒。

  • 建立標籤: 命令git tag <tagname>用於新建一個標籤,默認爲HEAD,也能夠指定一個commit id;命令git tag -a <tagname> -m "blablabla..."能夠指定標籤信息;命令git tag能夠查看全部標籤。
  • 操做標籤: 命令git push origin <tagname>能夠推送一個本地標籤;命令git push origin --tags能夠推送所有未推送過的本地標籤;命令git tag -d <tagname>能夠刪除一個本地標籤;命令git push origin :refs/tags/<tagname>能夠刪除一個遠程標籤。

使用GitHub

  • 在GitHub上,能夠任意Fork開源倉庫;
  • 本身擁有Fork後的倉庫的讀寫權限,能夠推送pull request給官方倉庫來貢獻代碼。

總結

  本文主要針對Git使用相關的分支管理和標籤管理進行了記錄,實踐出真知,多練習使用纔是最佳途徑!

參考連接

廖雪峯的官方網站 菜鳥教程

相關文章
相關標籤/搜索