您应该看看git-flow。这是一个出色的(且受欢迎的)分支模型。
Git流摘要
分枝
永远存在的主要树干是develop
和master
。master
拥有您的最新版本并develop
拥有您的最新“稳定”开发副本。
贡献者根据以下条件创建feature
分支(feature/
按惯例前缀)develop
:
$ git checkout -b feature/my-feature develop
和hotfix
分支(hotfix/
按惯例前缀)master
:
# hotfix the latest version of master
$ git checkout -b hotfix/hotfix-version-number master
# or hotfix from a specific version
$ git checkout -b hotfix/hotfix-version-number <starting-tag-name>
这些分支是“一次性的”,这意味着它们在合并回主干之前的寿命很短。它们旨在封装一些小的功能。
整理分支
当贡献者完成 feature
分支后,他们将其合并回develop
:
$ git checkout develop
$ git merge --no-ff feature/my-feature
$ git branch -d feature/my-feature
完成hotfix
分支后,将其合并回两个分支中master
及develop
因此修复怀揣着:
$ git checkout master
$ git merge --no-ff hotfix/hotfix-version-number
$ git checkout develop
$ git merge --no-ff hotfix/hotfix-version-number
$ git branch -d hotfix/hotfix-version-number
这是持续集成方面。
发布
准备开始打包发行版时,可以release
从“稳定” 创建分支develop
分支创建分支(与创建feature
分支相同)。然后,您可以在标签中添加版本号(如下所述)。
使用单独的release
分支可以使您继续开发新功能,develop
同时修复错误并为功能添加最后的修饰。release
分支。
当您准备好完成发行时,可以将release
分支合并到master
和中develop
(就像一个hotfix
),以便所有更改都可以继续进行。
标记
创建release
分支或hotfix
分支时,可以在标记中适当地改变版本号。使用香草git,看起来像这样:
$ git tag -a <tag-name> -m <tag-description>
然后,您还必须将标签(分别)推送到远程存储库:
$ git push --tags
通常最好使用语义版本,其中版本采用形式major.minor.hotfix
。主要颠簸是向后不兼容的,而次要和修补程序颠簸不是向后不兼容的(除非您处于测试版,0.x.x
)。
合并中
如上所述,git-flow鼓励您使用以下命令合并分支:
$ git merge --no-ff <branch-name>
的 --no-ff
选项使您可以维护所有分支历史记录,而不会在存储库的当前提交中留下一堆分支(因此,不用担心,您不会为每个版本都拥有一个分支)。
我们也鼓励您与
$ git pull --rebase
因此,您不会添加很多无用的合并提交。
您可以将git配置为在您的默认情况下同时执行这两项操作 .gitconfig
。不过,我会让你看一眼;)
浏览版本
当某人正在寻找特定版本的代码库时,他们可以按名称签出标签:
# checkout in detached HEAD to browse
$ git checkout <tag-name>
# OR checkout and create a new local branch (as you might for a hotfix)
$ git checkout -b <new-branch-name> <tag-name>
或者,如果有人在github上浏览,则“分支”下拉菜单中还会有一个“标签”标签。
使用git-flow扩展名(推荐)
我最喜欢的使用此模型的方法是使用git flow扩展。
(编辑: Louis推荐了AVH前叉,它可以更好地git describe
工作,现在可能会更活跃。谢谢Louis。)
该扩展程序可自动执行所有混乱的部分(例如merge --no-ff
合并后使用和删除分支),以便您继续生活。
例如,使用扩展名,您可以创建一个功能分支,如下所示:
$ git flow feature start my-feature-name
像这样完成它
$ git flow feature finish my-feature-name
修补程序和发行版的命令类似,尽管它们使用版本号代替分支名称,如下所示:
# Create hotfix number 14 for this minor version.
$ git flow hotfix start 2.4.14
# Create the next release
$ git flow release start 2.5.0
然后,Git flow为您创建版本标记,并提醒您在任何配置或清单文件中更改版本(可以使用任务管理器(如grunt)来完成)。
希望能对您有所帮助:)我不确定您如何将其与Travis CI设置完全集成,但是我猜githooks可以帮助您。