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 ...
随机推荐
- ASP.NET 预编译
ASP.NET 预编译概述 https://msdn.microsoft.com/zh-cn/library/bb398860%28v=VS.90%29.aspx 如何:预编译 ASP.NET 网站以 ...
- html-----009
</head> <!-- 通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面. <p> 垂直框架</p> 本例演示:如何使用三份不同的文档制作一个垂直框 ...
- tomcat内存溢出问题
内存泄露java.lang.OutOfMemoryError: PermGen space解决办法 今天访问web服务器,tomcat服务就瘫痪了,通过查看日志,发现java.lang.OutOfMe ...
- 常用js函数
1.获得元素到页面的绝对距离 function getPos(obj) { var pos = {left:0, top:0}; while (obj) { pos.left += obj.offse ...
- SQL VIEW(视图)
1,视图包含行和列,就像一个真实的表. 2,视图中的字段就是来自一个或多个数据库中的真实的表中的字段. 3,我们可以向视图添加 SQL 函数.WHERE 以及 JOIN 语句,我们也可以提交数据,就像 ...
- 用C#实现MD5算法
/// <summary> /// 一个实现MD5散列字符串的类 /// </summary> public sealed class MD5Hash ...
- datatables完整的增删改查
1.需要指定datatables的ID <button class="btn btn-primary" id="newAttribute">新增证照 ...
- JavaScript语言用10张图
JavaScript 语言基础知识点总结,用图片树形结构说明.包括Windows对象.JavaScriptDOM基本操作.JavaScript变量.JavaScript数据类型.JavaScript运 ...
- 限制apache错误日志大小
①配置错误日志 在http.conf配置: ErrorLog "| /opt/lampp/bin/rotatelogs /opt/lampp/logs/%Y_%m_%d_error_log ...
- Web负载均衡的几种方式
Web负载均衡的几种实现方式 摘要:负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用 ...