小项目 Git 使用心得

Posted by Allen on 2015-11-20
Coding

因为 公司官网 策划、设计(Sketch)、前端(Bootstrap)、后端(Express)都是我一个人搞定,所以考虑边学变尝试的角度,从一开始就用了 Git 作为 Version Control System。

比较了 GitHubBitbucket,虽然前者的 community 比较强大,但是后者给小 studio 提供了非常吸引人的 plan:

  • Github:鼓励开源,按照 Private Repository 的数量收费;
  • Bitbucket:按照 team 的人员数量收费,5 users 以内的 Private Repository 免费。

这个 project 就我一个人,所以自然就选了 Bitbucket。一开始什么都在 master branch 上操作,主要是用来把白天公司 mbp 上没完成的代码 pass 到家里的 mbp 上继续写。然后觉得同时写各种功能变得越来越乱,就根据各种供能建了好多 branch,但是合来合去也觉得麻烦就怕会出错。

稍微研究了下网上的 Git 部署策略文章,找到阮一峰老师的这篇《Git分支管理策略》,终于找到适合自己的策略了。

Git Workflow

大致是上图这样的 workflow,主要分成 3 个 branch:

  1. 主线分支 Master
  2. 开发分支 Develop
  3. 临时性分支 temporary branches:
    • 功能分支 Feature
    • 预发布分支 Release
    • 抓虫分支 Fixbug

具体各个 branch 的描述大家去看阮一峰老师的文章,这里仅仅提一下几个重点。

代码库应该有一个、且仅有一个主分支 Master

首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布并用 Tag 标记。

1
$ git tag -a 1.2

为了保证版本演进的清晰,使用 –no-ff 参数

默认情况下,Git 执行”快进式合并”(fast-farward merge),会直接将 Master 分支指向 Develop 分支。使用–no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。关于合并的更多解释,请参考 Benjamin Sandofsky 的《Understanding the Git Workflow》。

将Develop分支发布到Master分支的命令:

1
2
3
4
5
6
# 切换到Master分支
$ git checkout master

# 对Develop分支进行合并
$ git merge --no-ff develop

记得删除临时性分支

Feature、Release、Fixbug 这三种分支都属于临时性需要,使用完以后,应该删除,使得代码库的常设分支始终只有 Master 和 Develop。

创建一个功能分支:

1
$ git checkout -b feature-x develop

开发完成后,将功能分支合并到 develop 分支:

1
2
$ git checkout develop
$ git merge --no-ff feature-x

删除 feature 分支:

1
$ git branch -d feature-x

Comments: