Git功能分支工作流


本文参照自: http://blog.jobbole.com/76857/
一、前言
如果你在阅读本文前,对git还非常陌生,请先花点时间的快速阅读一下《 Git简介
功能分支工作流背后的核心思路是所有的功能开发应该在一个专门的分支,而不是在master分支上。这个隔离可以方便多个开发者在各自的功能上开发而不会弄乱主干代码。另外,也保证了master分支的代码一定不会是有问题的,极大有利于集成环境。
Git功能分支工作流 - hubingforever - 民主与科学
 
 
、工作方式
  功能分支工作 流仍然用中央仓库,并且master分支还是代表了正式项目的历史。但不是直接提交本地历史到各自的本地master分支,开发者每次在开始新功能前先创建一个新分支。
在master分支和功能分支之间,Git是没有技术上的区别,所以开发者可以用和集中式工作流中完全一样的方式编辑、暂存和提交修改到功能分支上。
另外,功能分支也可以(且应该)push到中央仓库中。这样不修改正式代码就可以和其它开发者分享提交的功能。由于master仅有的一个『特殊』分支,在中央仓库上存多个功能分支不会有任何问题。当然,这样做也可以很方便地备份各自的本地提交。
、示例
3.1、开始开发一个新功能
Git功能分支工作流 - hubingforever - 民主与科学
  在开始开发功能前,小红需要一个独立的分支。使用下面的命令新建一个分支:

<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="pln">git checkout </span><span class="pun" style="color:rgb(102,102,0)">-</span><span class="pln">b </span><span style="color:rgb(0,0,128); font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; white-space:normal"><span class="pln" style="color:rgb(0,0,0)">myfeature</span></span><span class="pln"> master</span></p>
关于git checkout的更多内容请参考《 git checkout简介
这个命令检出一个基于master名为my-feature的分支,Git的-b选项表示如果分支还不存在则新建分支。这个新分支上,小红按老套路编辑、暂存和提交修改,按需要提交以实现功能:
<div><span style="font-family:Hiragino Sans GB W3,Hiragino Sans GB,Arial,Helvetica,simsun,u5b8bu4f53; color:#000080"><span class="pln" style="color:rgb(0,0,0)">git status</span></span></div><div><span style="font-family:Hiragino Sans GB W3,Hiragino Sans GB,Arial,Helvetica,simsun,u5b8bu4f53; color:#000080"><span class="pln" style="color:rgb(0,0,0)"> git add</span></span></div><div><span style="font-family:Hiragino Sans GB W3,Hiragino Sans GB,Arial,Helvetica,simsun,u5b8bu4f53; color:#000080"><span class="pln" style="color:rgb(0,0,0)"> git commit</span></span></div><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"></p>
开发好期间都只提交到 功能 分支myfeature
3.2、push备份功能分支
Git功能分支工作流 - hubingforever - 民主与科学
 
小红在开发一个新功能,但是现在还没完成,明天就是国庆假,他也不打算加班。在这种情况下,push功能分支到中央仓库是很好的做法,这样可以方便地备份,如果和其它开发协作,也让他们可以看到小红的提交。
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="pln">git push </span><span class="pun" style="color:rgb(102,102,0)">-</span><span class="pln">u origin </span><span style="color:rgb(0,0,128); font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; white-space:normal"><span class="pln" style="color:rgb(0,0,0)">myfeature</span></span></p>
这条命令push my-feature分支到中央仓库(origin),-u选项设置本地分支去跟踪远程对应的分支。设置好跟踪的分支后,小红就可以使用git push命令省去指定推送分支的参数。
关于git pull的更多内容请参考《 git push简介
3.3、合并功能分支到主分支
国庆放假回来后,小红完成整个功能的开发,需要把开发的功能合并在主分支(这里假设master就为主分支)上。
首先切换到主分支
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="pln">git checkout master</span></p>
然后拉取最新的主分支代码
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="pln">git pull master</span></p>
接着合并自己功能分支到主分支
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span style="font-family:Hiragino Sans GB W3,Hiragino Sans GB,Arial,Helvetica,simsun,u5b8bu4f53; color:#000080"><span class="pln" style="color:rgb(0,0,0)">git merge </span><span class="pun" style="color:rgb(102,102,0)">--</span><span class="kwd" style="color:rgb(0,0,136)">no</span><span class="pun" style="color:rgb(102,102,0)">-</span><span class="pln" style="color:rgb(0,0,0)">ff </span></span><span style="color:rgb(0,0,128); font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; white-space:normal"><span class="pln" style="color:rgb(0,0,0)">myfeature</span></span></p>
如果这里遇到冲突,需要解决。关于 merge 和merge 解决冲突 的详细内容请阅读《 git merge简介
3.4、发布修改到主分支
通过push把修改发布的服务器的主分支中
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="pln">git push origin master </span></p>
3.5、删除功能分支
功能已经开放完成,并已发布到 服务器的主分支中,现在可以删除功能分支了。
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"><span class="pln">git branch </span><span class="pun" style="color:rgb(102,102,0)">-</span><span class="pln">d myfeature</span></p>
另外,关于Git集中式工作流请参照《 Git集中式工作流
结束!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值