Bear 實驗室: 什麼是Git flow ? 如何在SourceTree使用Git flow管理開發!
![]() 今天Bear實驗室的主題不是要介紹程式,而是來好好介紹一下有關管理進度開發的工具!
那今天實驗室的主題是.....Git Flow!!!! 使用 git 的開發者都知道 git 有 branch 這個功能,但要如何運用在開發流程呢? (以下內容將以Source Tree講解,不知道Source Tree是什麼的請點此連結) 什麼是 git flow?![]() 一個Git flow,其中的內容大致可以區分如下:
主要分支 支援性分支 在本篇教學中,採用 SourceTree 這套 git gui 工具,因為它有整合了git flow的功能,很方便。 本篇教學範例將以圖說的方式,列出以下步驟,並在部分步驟中列出相對應的指令以供參考: 以下教學需要使用到SourceTree,關於SourceTree官方網站請點以下連結 初始化專案的 git flow 設定![]() 執行 SourceTree 點擊 Add Repository。
![]() 因為我們是建立一個新的空目錄,所以切換到 Create Repository頁面,輸入資訊後點擊 Create。
![]() 雙擊剛剛建立的 Repository。
![]() 因為整個專案都是空的,所以我們需要 commit 一次,以建立 master branch。
![]() 先在專案目錄下新增一個文字檔。
![]() 在 Working Copy頁面中,選取剛剛放進專案目錄中的文字檔,點擊 Add。
![]() 檔案就會從下方移到上方,準備 commit。接著點擊 Commit。
![]() 輸入 Commit message 後,點擊 Commit。
![]() Commit 之後就可以看到 BRANCHES 下多出了 master。接下來就可以點擊 Git Flow 為專案初始化 git flow設定。
![]() 基本上不用再調什麼設定,直接點擊 OK。
參考指令:
![]() 完成後就會看到在 BRANCHES 下出現 develop 了,這樣就完成了 git flow 的初始化。
開發新功能(feature)![]() 點擊 Git flow 開啟選單。
![]() 點擊 Start a New Feature。
![]() 輸入Feature Name,然後點擊 OK,建立新的 branch 用來開發新功能。
參考指令:
![]() 在 BRANCHES 下可以看到新增了 feature/f1 這個 branch,我們在這 branch 上開發新功能。
![]() 在專案目錄下新增一檔案,用來代表新功能,接下來就是老樣子的 commmit 動作。
這邊我們隨意建了一個新檔案叫做main.c!
![]() 在 Working Copy頁面中,選取剛剛放進專案目錄中的檔案,點擊 Add。
![]() 檔案就會從下方移到上方,準備 commit。接著點擊 Commit。
![]() 輸入 Commit message 後,點擊 Commit。
![]() 回到 BRANCHES,因為新功能完成了,所以我們要將 feature/f1 merge 回 develop。點擊 Git Flow 叫出選單。
![]() 因為目前我們在 feature/f1 上,所以點擊 Finish Current就可以了。
![]() 這邊直接點擊 OK。
參考指令:
![]() 回到只有 develop 與 master 兩個 branch 的狀態了。重複以上動作直到功能開發完成,就要進行下一個步驟,釋出專案給使用者。
釋出專案(release)當功能都開發完成之後,就可以進行準備釋出專案,在這 release branch 上做的動作主要就是修改版本號之類的釋出設定。
釋出專案的話,就代表你開發完成了要出去給測試或是準備上架囉!! ![]() 點擊 Git Flow。
![]() 點擊 Start a New Release。
![]() 輸入版本號,點擊 OK(預設是從 develop 最新的版本分支)。
參考指令:
![]() 在 BRANCHES 下可以看到出現了 release/v0.1.0 的 branch。
![]() 現在讓我們修改一下專案目錄下的 README.md 的內容,加上版本號資訊後存檔。
(畫面中使用的是 Mou Markdown 編輯器, 在Mac上編輯README相當好用, 有機會Bear再詳加介紹)
![]() 接下來 commit 剛剛的變更,一樣切換到 Working Copy 頁面,選取變更的檔案,點擊 Add。
![]() 點擊 Commit。
![]() 輸入 Commit message 後點擊 Commit。
![]() 回到 BRANCHES 頁面,可以看到 Graph 有變動了。接下來請點擊 Git Flow。
![]() 因為目前我們正在 release/v0.1.0 branch,所以直接點擊 Finish Current。
![]() 點擊 OK。請注意在 Git Flow 流程中,release branch 只負責釋出設定與修正 bug,千萬不要在上面開發新功能。
參考指令:
![]() Graph 就會出現了變更,release/v0.1.0 會 merge 到 master 跟 develop。並在 master 上標上 v0.1.0 的 tag。
經由以上步驟,我們就學會了依照 Git Flow 從開發到釋出的流程。
緊急上版(hotfix)當專案釋出之後,可能才發現有重大的錯誤,
但一時之間新功能也正在開發,無法及時釋出新版本..... 這時候可以從 master 分支出 hotfix branch 做緊急上版。 ![]() 假設目前專案正在進行新功能的開發,如上圖所示,但突然發現版本v0.1.0有錯誤需要馬上修改。請點擊 Git Flow。
![]() 因為目前我們在正 feature/f2 branch上,所以我們點擊 Other Action…開啟選單。
![]() 點擊 Start Hotfix。
![]() 輸入版本號,因為目前我們要修正的版本是v0.1.0,所以按照慣例這裡輸入v0.1.1。點擊 OK。
參考指令:
![]() 可以看到 Graph 發生了變動,hotfix/v0.1.1是從 master 分支出來的,接下來就可以修正錯誤,這邊就不再重複講述 commmit 的步驟。
![]() 錯誤已經修復好也 commit 了,接下來就是釋出更新的版本。請點擊 Git Flow。
![]() 因為目前我們就在 hotfix/v0.1.1上,所以直接點擊 Finish Current。
![]() 點擊 OK。
參考指令:
![]() 可以在 Graph 中看到了變更,hotfix/v0.1.1 會 merge 到 master 跟 develop。並在 master 上標上 v0.1.1 的 tag。之後再切換到 feature/f2 繼續開發新功能。
以上就是在 SourceTree 使用 Git flow 開發流程的方式。
|
Bear 實驗室: 什麼是Git flow ? 如何在SourceTree使用Git flow管理開發!的更多相关文章
- 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net
1. 注册一个账号和创建项目 先在git.oschina.net上注册一个账号和新建一个project ,如project name 是"myTest". 2.安装git sudo ...
- 代码管理工具 --- git的学习笔记二《git的工作原理》
通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...
- 代码管理工具 --- git的学习笔记一《git的个人开发》
重点摘要: 创建了一个文件后首先先通过git add . 添加到暂缓区,然后通过git commit -m "提交的名字" 提交到本地仓库,最后才可能push到远程仓库. 1. 个 ...
- 【Git】关于VSCode 内置Git问题
VSCode的内置git是自动关联本机git的, 所以当提交代码时,VSCode提示[警告:请配置git用户名和账户]时, 只需要在git bash 端配置git config --gobal use ...
- git上传代码到osc@git
1.get an account 2.get a ssh-key 3.git setting git config --global user.name "...." git co ...
- python解析git log后生成页面显示git更新日志信息
使用git log可以查到git上项目的更新日志. 如下两个git项目,我想把git的日志信息解析成一个便于在浏览器上查看的页面. https://github.com/gityf/lua https ...
- Git使用指南(1)——Git配置命令
配置用户信息 git config --global user.name bongxin git config --global user.email bongxin@yeah.net 配置文本编辑器 ...
- git学习:多人协作,标签管理
多人协作: 查看远程库的信息, git remote 推送分支到远程库 git push origin master/dev 注意:master是主分支,时刻需要与远程同步 dev是开发分支,也需要与 ...
- 2015继续任性——不会Git命令,照样玩转Git
最近事情比较多,一眨眼,已经半个月没有写博客了~不得不感慨光阴似箭啊!当然,2015年有很多让我们期待的事情,比如win10正式版..NET开源.VS2015等等.想想都让人兴奋啊~~ 为了迎接VS2 ...
随机推荐
- Java——有关日期的方法
1.日期转换成String格式化输出: public String getDate() { SimpleDateFormat format = new SimpleDateFormat("y ...
- mediawiki数据库的下载地址及导入方法
mediawiki导入数据库 数据库下载:http://zh.wikipedia.org/wiki/Wikipedia:%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8B%E8% ...
- 控制器的跳转-modal与push
一.modal与pushmodal从下面往上盖住原来的控制器,一般上一个控制器和下一个控制器没有什么关联时用modal,比如联系人的加号跳转页面,任何控制器都可以用modal push一般是上下文有关 ...
- HDU 3681 Prison Break(状态压缩dp + BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3681 前些天花时间看到的题目,但写出不来,弱弱的放弃了.没想到现在学弟居然写出这种代码来,大吃一惊附加 ...
- Headfirst设计模式的C++实现——装饰者模式(Decorater)
Beverage.h #ifndef BEVERAGE_H_INCLUDED #define BEVERAGE_H_INCLUDED #include <string> class Bev ...
- 关于web开发的一点理解
对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端 服务端通过解析报文并处理报文最后把处理的结果 ...
- 菜鸟的MySQL学习笔记(三)
4-1插入记录INSERT INSERT [INTO] tbl_name [(col_name)] {VALUES|VALUE} ({expr|DEFAULT},...), (...), ... ...
- 挂载磁盘的问题(/dev/sdb1 is apparently in use by the system; will not make a 文件系统 here!)
用fdisk给新磁盘分区后.然后要创建文件系统 [root@cuizhipeng ~]# mkfs.ext4 /dev/sdb1mke2fs 1.41.12 (17-May-2010)/dev/sdb ...
- O_NONBLOCK模式下写fifo的注意事项
后台网络通信框架一般采用fifo来作为事件通知的机制:创建一个fifo,然后以非阻塞读和非阻塞写的方式打开fifo,然后把fd加到epoll里面,作为通知网络事件的fd. 在这里有个隐晦的问题容易被忽 ...
- MAC 终端快捷建
常用的快捷键: Ctrl + d 删除一个字符,相当于通常的Delete键(命令行若无所有字符,则相当于exit:处理多行标准输入时也表示eof) Ctrl + h 退格删 ...