Git 常用命令和 Git Flow 梳理

git

用 git 有一段時間了,之前沒有詳細地了解 git flow,導致協(xié)作過程中或多或少出現(xiàn)了一些頭疼問題。最近靜下心來理了下 git flow 的整個流程,再回頭看開朗了不少,總結(jié)到這里。介紹的是一些常用的 git 基礎命令和 git flow,當然也很重要的,過程中自己在 Github 上建了一個模擬的 Demo 用來熟悉 git flow。其實從理解到動手完成還是有點距離的,笨人有笨法嘛。如有不準確的地方歡迎指正。: )

Git 常用命令

這里列出了一些比較常用的 git 命令,每個命令介紹后面都帶一個簡單例子~

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 的,表示遠程分支

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

用于協(xié)作時,項目隊友添加或刪除了遠程分支的分支,可以通過這種方式來刷新分支列表信息


Git Flow 梳理

git flow 完整圖示

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

1.主要分支

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

Master

Develop

develop 和 master 關(guān)系圖

master 分支(origin/master)

代碼倉庫中有且僅有的一條主分支,默認為 master ,在創(chuàng)建版本庫時會自動創(chuàng)建。所有提供給用戶使用的正式版本的源碼,都會在這個分支上發(fā)布。也就是說主分支 master 用來發(fā)布重大版本。

develop 分支(origin/develop)

日常開發(fā)工作都會在 develop 分支上面完成。develop 分支可以用來生成代碼的最新隔夜版本(nightly builds)。

創(chuàng)建 develop 分支

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

當我們在develop上完成了新版本的功能,最終會把所有的修改 mergemaster 分支。針對每次 master 的修改都會打一個 Tag 作為可發(fā)布產(chǎn)品的版本號。

2.輔助分支

開發(fā)過程中不可能項目人所有都在一個 develop 分支中開發(fā),版本管理會很混亂。所以除了主要分支外,我們還需要一些輔助分支來協(xié)助團隊成員間的并行開發(fā)。

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

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

通過分支名我們能知道各類型分支都有特定作用,對于他們各自的起始分支和最終的合并分支也都有嚴格規(guī)定。呼,雖然可能會麻煩點,但讓人一目了然的效果還是很誘人的。

下面逐一介紹下各類型分支的創(chuàng)建使用和移除方法,過程中我在 Github 中創(chuàng)建一個虛擬的項目用來熟悉整個流程,或許你也可以像我一樣做一遍。哈,動手總會有意外收獲嘛。廢話少說,繼續(xù)正題~

2.1.Feature branches(功能分支)

feature branches

應用場景:

當要開始一個新功能的開發(fā)時,我門可以創(chuàng)建一個 Feature branche 。等待這個新功能開發(fā)完成并確定應用到新版本中就合并回 develop,那么如果不是就會被很遺憾的丟棄。。。

應用規(guī)則:

  1. develop 分支創(chuàng)建,最終合并回 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" 的作用是創(chuàng)建一個新的 "commit" 對象用于當前合并操作。這樣既可以避免丟失該功能分支的歷史存在信息,又可以集中該功能分支所有歷史提交。并且如果想回退版本也會比較方便。

git merge --no-ff 圖示

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

 $ git branch -d feature/test

 $ git push origin --delete feature/test

2.2.Release branches(預發(fā)布分支)

應用場景:

"Release branches" 用來做新版本發(fā)布前的準備工作,在上面可以做一些小的 bug 修復、準備發(fā)布版本號等等和發(fā)布有關(guān)的小改動,其實已經(jīng)是一個比較成熟的版本了。另外這樣我們既可以在預發(fā)布分支上做一些發(fā)布前準備,也不會影響 "develop" 分支上下一版本的新功能開發(fā)。

應用規(guī)則:

  1. develop 分支創(chuàng)建,最終合并回 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 完成,也就預示著我們可以發(fā)布了。打上相應的版本號,再 push 到遠程倉庫。

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

預發(fā)布分支所做的修改同時也要合并回 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" 主要用于處理線上版本出現(xiàn)的一些需要立刻修復的 bug 情況.

應用規(guī)則:

  1. master 分支上當前版本號的 tag 處切出,也就是從最新的 master 上創(chuàng)建,最終合并回 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

總結(jié)

啊哈,又到尾聲了。上面的 Git 常用命令Git Flow 只是一些基本常識,并沒有什么新的東西加入。在平時的團隊協(xié)作中有些對于我自身而言還是比較新鮮的,比如 tag ,這些一般都交給老大來弄(因為他要 review):D 。好像跑偏了。。。對自己而言,理一遍后的收獲還是不小的,對 Git Flow 的整個流程有了大概的了解,但具體每個 git 命令內(nèi)部是怎么處理的呢,這個留到后面再梳理一下~

參考內(nèi)容:



Git分支管理策略


A successful Git branching model

戳這里前往我的小屋 I'm Jony :-D

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 多種多樣的工作流使得在項目中實施Git時變得難以選擇。這份教程提供了一個出發(fā)點,調(diào)查企業(yè)團隊最常見的Git工作流。...
    JSErik閱讀 4,614評論 2 8
  • Git分支管理 master:主分支,當前分支上的代碼隨時可以直接發(fā)布,并且只能通過Pull Request從其他...
    UEUEO閱讀 9,970評論 5 33
  • 凡人下凡閱讀 204評論 0 0
  • (節(jié)令詠) 文/菊 酉月秋高夜朗空, 螢光閃爍舞飛蟲; 嫦娥奔月矇眬影, 折桂飄香暮彩虹。 素練千山云與共, 冰輪...
    斌之志閱讀 1,925評論 34 41

友情鏈接更多精彩內(nèi)容