Git基礎知識教程整理(Git分支管理)

分支的建立、合併與刪除

建立分支與切換分支

$ git branch develop

$ git checkout developgit

或者安全

$ git checkout -b develop

git checkout命令加上-b參數表示建立並切換。git branch或者(git branch -a)後面不跟分支名時指列出全部分支,當前分支前面加*。編輯器

$ git branch

合併分支

git merge命令用於合併指定分支到當前分支,若是當前分支是master分支,git merge develop指將develop分支合併到master分支。ip

$ git merge develop

刪除分支

刪除本地develop分支,不能在當前分支執行刪除當前分支的操做。開發

$ git branch -d develop

解決衝突

衝突能夠說是兩個分支的衝突,產生的緣由是兩個已經提交的分支的相同文件相同位置的的不一樣操做進行了合併rem

多人協做開發的時候,若是出現了你沒有改過的文件跟你衝突了,必定要去找到當事者,說清楚是如何衝突,而後協商解決,修文件,確保沒問題後在從新add、commit、push。同步

通常代碼編輯器都集成了git,如WebStrom、VsCode,能夠很直觀的查看衝突代碼,並進行代碼合併。工作流

Rebase操做

合併多個commit爲一個完整commit

$ git rebase -i [startpoint] [endpoint]

其中-i的意思是--interactive,即彈出交互式的界面讓用戶編輯完成合並操做,[startpoint] [endpoint]則指定了一個編輯區間,若是不指定[endpoint],則該區間的終點默認是當前分支HEAD所指向的commit(注:該區間指定的是一個前開後閉的區間)。若是不指定分支默認操做當前分支it

將當前分支的一段commit粘貼到另外一個分支上

$ git rebase [startpoint] [endpoint] --onto [branchName]

rebase的優勢和缺點

優勢io

  • rebase最大的好處是你的項目歷史會很是整潔
  • rebase 致使最後的項目歷史呈現出完美的線性——你能夠從項目終點到起點瀏覽而不須要任何的 fork。這讓你更容易使用 git log、git bisect 和 gitk 來查看項目歷史

缺點

  • 安全性,若是你違反了 rebase 黃金法則(毫不要在公共的分支上使用它),重寫項目歷史可能會給你的協做工做流帶來災難性的影響
  • 可跟蹤性,rebase 不會有合併提交中附帶的信息——你看不到 feature 分支中併入了上游的哪些更改

修復衝突

git rebase --abort會回到rebase操做以前的狀態,以前的提交的不會丟棄。

$ git rebase --abort

git rebase --skip則會將引發衝突的commits丟棄掉。

$ git rebase --skip

git rebase --continue用於修復衝突,提示開發者,一步一步地有沒有解決衝突,fix conflicts and then run "git rebase --continue"。

$ git rebase --continue

遠程協做

本地倉庫和遠程倉庫,Git自動把本地的master分支和遠程的master分支對應起來了,而且,遠程倉庫的默認名稱是origin。

查看遠程庫(git remote)

$ git remote

查看遠程庫詳細信息

$ git remote -v

往遠程倉庫推送代碼,須選擇本地分支,下面指往develop分支推送代碼

$ git remote origin develop

只有須要協同開發的才須要往遠程倉庫推送代碼

  • master分支是主分支,所以要時刻與遠程同步;
  • dev分支是開發分支,團隊全部成員都須要在上面工做,因此也須要與遠程同步;
  • bug分支只用於在本地修復bug,不用推送到遠程;
  • feature分支是否推到遠程,取決於你是否和你的小夥伴合做在上面開發。

標籤管理

建立標籤 (git tag <tagname>)

$ git tag v1.0

查看標籤(git tag)

$ git tag

默認標籤是打在當前分支最新提交的commit上的,若是要打在歷史的commit上,找到歷史提交的commit id(git tag v0.9 <commit id>)

git tag v0.9 f52c633

查看標籤信息(git show <tagname>)

$ git show v0.9

建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字

$ git tag -a v0.1 -m "version 0.1 released" 1094adb
相關文章
相關標籤/搜索