Git 經常使用命令和 Git Flow 梳理



git

用 git 有一段時間了,以前沒有詳細地瞭解 git flow,致使協做過程當中或多或少出現了一些頭疼問題。最近靜下心來理了下 git flow 的整個流程,再回頭看開朗了很多,總結到這裏。介紹的是一些經常使用的 git 基礎命令和 git flow,固然也很重要的,過程當中本身在 Github 上建了一個模擬的 Demo 用來熟悉 git flow。其實從理解到動手完成仍是有點距離的,笨人有笨法嘛。若有不許確的地方歡迎指正。: )git

Git 經常使用命令

這裏列出了一些比較經常使用的 git 命令,每一個命令介紹後面都帶一個簡單例子~github

1. 新開分支

$ git branch 新分支名
    
 #新建分支 develop
 $ git branch develop

2. 切換到另外一個分支

$ git checkout 分支名

 #切換到 develop 分支
 $ git checkout develop

3. 新開分支並切換到新分支

$ git checkout -b 新分支名

 #新開 develop 分支,並切換到此分支
 $ git checkout -b develop

4. 查看分支列表

$ git branch -a

頭部帶 remotes/origin 的,表示遠程分支ruby

5. 查看遠程分支列表

$ git branch -r

6. 向遠程倉庫提交本地新開的分支

$ git push origin 新開分支名

 #提交新建的 develop 分支
 $ git push origin develop

7. 刪除遠程分支

$ git push origin --delete 遠程分支名

 #刪除遠程倉庫中的 develop 分支
 $ git push origin --delete develop

8. 刪除本地分支

$ git branch -d 分支名

 #刪除本地的 develop 分支
 $ git branch -d develop

9. 更新分支列表信息

$ git fetch -p

用於協做時,項目隊友添加或刪除了遠程分支的分支,能夠經過這種方式來刷新分支列表信息bash


Git Flow 梳理


git flow 完整圖示

Git 開發模式本質上是一套流程,團隊每一個成員遵照這套流程以確保完成可控的軟件開發過程。原文參考post

1.主要分支

在遠程倉庫中有兩個主要分支的生命期能夠無限長,分別是:fetch

Masterui

Developspa


develop 和 master 關係圖

master 分支(origin/master)code

代碼倉庫中有且僅有的一條主分支,默認爲 master ,在建立版本庫時會自動建立。全部提供給用戶使用的正式版本的源碼,都會在這個分支上發佈。也就是說主分支 master 用來發布重大版本。orm

develop 分支(origin/develop)

平常開發工做都會在 develop 分支上面完成。develop 分支能夠用來生成代碼的最新隔夜版本(nightly builds)。

建立 develop 分支

$ git checkout -b develop master
 
 #push develop 到遠程倉庫
 $ git push origin develop

當咱們在develop上完成了新版本的功能,最終會把全部的修改 mergemaster 分支。針對每次 master 的修改都會打一個 Tag 做爲可發佈產品的版本號。

2.輔助分支

開發過程當中不可能項目人全部都在一個 develop 分支中開發,版本管理會很混亂。因此除了主要分支外,咱們還須要一些輔助分支來協助團隊成員間的並行開發。

所用到的輔助分支大致分三類:

  • Feature branches(功能分支)
  • Release branches(預發佈分支)
  • Hotfix branches(熱修復分支)

經過分支名咱們能知道各種型分支都有特定做用,對於他們各自的起始分支和最終的合併分支也都有嚴格規定。呼,雖然可能會麻煩點,但讓人一目瞭然的效果仍是很誘人的。

下面逐一介紹下各種型分支的建立使用和移除方法,過程當中我在 Github 中建立一個虛擬的項目用來熟悉整個流程,或許你也能夠像我同樣作一遍。哈,動手總會有意外收穫嘛。廢話少說,繼續正題~

2.1.Feature branches(功能分支)


feature branches

應用場景:

當要開始一個新功能的開發時,我門能夠建立一個 Feature branche 。等待這個新功能開發完成並肯定應用到新版本中就合併回 develop,那麼若是不是就會被很遺憾的丟棄。。。

應用規則:

  1. develop 分支建立,最終合併回 develop 分支;

  2. 分支名:feature/*;

Tips:這裏不少地方說用 feature-* 的方式命名,由於公司項目中用的 feature/*方式,也就習慣了,其實意思是同樣的。

(1).Creat a feature branch

$ git checkout -b feature/test develop

do something in feature/test branch

push 本地 feature/test 到遠處代碼庫;

$ git push origin feature/test

(2).切換到 develop 合併 feature/test

$ git checkout develop

 $ git merge --no-ff feature/test

"- -no-ff" 的做用是建立一個新的 "commit" 對象用於當前合併操做。這樣既能夠避免丟失該功能分支的歷史存在信息,又能夠集中該功能分支全部歷史提交。而且若是想回退版本也會比較方便。


git merge --no-ff 圖示

(3).移除本地和遠程倉庫的 feature/test 分支

$ git branch -d feature/test

 $ git push origin --delete feature/test

2.2.Release branches(預發佈分支)

應用場景:

"Release branches" 用來作新版本發佈前的準備工做,在上面能夠作一些小的 bug 修復、準備發佈版本號等等和發佈有關的小改動,其實已是一個比較成熟的版本了。另外這樣咱們既能夠在預發佈分支上作一些發佈前準備,也不會影響 "develop" 分支上下一版本的新功能開發。

應用規則:

  1. develop 分支建立,最終合併回 developmaster;

  2. 分支名:release-*;

(1).Creat a release branch

$ git checkout -b release-1.1 develop
 
 #push 到遠程倉庫(可選)
 $ git push origin release-1.1

do something in release-1.1 branch

(2).切換到 master 合併 release-1.1

$ git checkout master

 $ git merge --no-ff release-1.1

 $ git tag -a 1.1

 $ git push origin 1.1

當咱們的 release-1.1 的 Review 完成,也就預示着咱們能夠發佈了。打上相應的版本號,再 push 到遠程倉庫。

(3).切換到 develop 合併 release-1.1

預發佈分支所作的修改同時也要合併回 develop

$ git checkout develop

 $ git merge --no-ff release-1.1

(4).移除本地和遠程倉庫的 release-1.1

$ git branch -d release-1.1

 $ git push origin --delete release-1.1

2.3.Hotfix branches(熱修復分支)


Hotfix branches 圖示

應用場景:

"Hotfix branches" 主要用於處理線上版本出現的一些須要馬上修復的 bug 狀況.

應用規則:

  1. master 分支上當前版本號的 tag 處切出,也就是從最新的 master 上建立,最終合併回 developmaster;

  2. 分支名:hotfix-*;

(1).Creat a fixbug branch

$ git checkout -b fixbug-1.1.1 master
 
 #push 到遠程倉庫(可選)
 $ git push origin fixbug-1.1.1

do something in fixbug-1.1.1 branch

(2).切換到 master 合併 fixbug-1.1.1

$ git checkout master

 $ git merge --no-ff fixbug-1.1.1

 $ git tag -a 1.1.1

 $ git push origin 1.1.1` 

bug 修復完成,合併回 master 並打上版本號;

(3).切換到 develop 合併 fixbug-1.1.1

$ git checkout develop

 $ git merge --no-ff fixbug-1.1.1

(4).移除本地和遠程倉庫的 fixbug-1.1.1

$ git branch -d fixbug-1.1.1

 $ git push origin --delete fixbug-1.1.1
相關文章
相關標籤/搜索