1.集中式工做流git
适用人群:开发小团队(4-5人),习惯使用SVN工具的小团队。分布式
工做方式:团队组长建立远程仓库,建立一个master分支,组员可读可写。工具
每一个开发人员都git clone远程仓库到本地仓库,在master分支上开发。性能
每次开发都要git pull更新到远程仓库的master分支版本。测试
每次开发完成就git commit到本地仓库, 接着git push到远程仓库。spa
缺点:忘了git push,一直会提交到本地仓库,没有推送到远程仓库。开发
忘了git pull,致使本地仓库与中央仓库不一致,发生文件冲突。同步
大量操做git pull,致使增长git分支合并次数,增长了git变基次数,下降了git的性能。工作流
2.分支工做流it
适用人群:开发中团队(10人以上,100人如下),熟悉Git分支的团队。
工做方式:团队组长建立远程仓库,建立一个master分支,组员可读不可写。
每一个开发人员都git clone远程仓库到本地仓库。
每一个开发人员建立本身的feature分支,在feature分支上开发。(记住,feature分支是基于master分支)
每一个开发人员每次开发完成就git commit到本地仓库中本身的feature分支, 接着git push到远程仓库。
经过pull request提醒团队组长,浏览组员提交feature分支。
组长把feature分支拉下来并合并到本身本地仓库的master分支上测试。
组长测试feature分支经过以后,由组长负责把feature分支合并到远程仓库的master分支上。
组长在远程仓库把合并过的feature分支删除。
组员在本地仓库把合并过的feature分支删除。
组员将本地仓库分支切换为master分支,而后git pull将本地仓库的master分支更新到远程仓库的master分支版本。
缺点:增长团队组长的工做量。
增长团队组员提交步骤。
PS:Pull Request做用是能够让其余组员或组长能够查看你的代码,并能够提出代码修改意见或者讨论。
3.Gitflow工做流(多分支工做流)
适用人群:开发团队(100人以上),熟悉Git分支的团队。
工做方式:项目维护者建立项目维护者的远程仓库,建立master分支与develop分支,贡献者可读不可写。
每一个贡献者git clone远程仓库中的develop分支到本地仓库。(记住,develop分支至关于master的分支,包括功能开发,修改,测试。master分支至关于最终分支)
每一个贡献者在本地仓库建立本身的feature分支,在feature分支上开发。
在feature分支又能够建立多个feature分支,继续开发项目。
每一个贡献者每次开发完成就git commit到本地仓库中本身的feature分支, 接着git push到远程仓库。
经过pull request提醒项目维护者,浏览贡献者提交feature分支。
项目维护者把feature分支拉下来并合并到本身本地仓库的develop分支上测试。
组长测试feature分支经过以后,由组长负责把feature分支合并到远程仓库的develop分支上。
项目维护者会release分支上git tag打上版本号。
项目维护者能够从develop分支建立release分支,接着把release分支合并到master分支上,同时master分支同步到develop分支。
项目维护者在远程仓库把合并过的feature分支删除。
每一个贡献者在本地仓库把合并过的feature分支删除。
每一个贡献者将本地仓库分支切换为develop分支,而后git pull将本地仓库的master分支更新到远程仓库的develop分支版本。
PS:Gitflow工做流是Vincent Driessen工程师提出的多分支工做流。
4.分叉工做流(分布式仓库工做流)
适用人群:开发团队(1000以上),熟悉Git分支的团队。
工做方式:主项目维护者建立主项目维护者的远程仓库,建立一个master分支,从项目维护者可读不可写。
从项目维护者经过fork主项目维护者的远程仓库的副本到本身的远程仓库,包括master分支。(记住,从项目维护者的远程仓库独立于主项目维护者的远程仓库)
从项目维护者git clone主项目维护者的远程仓库的副本到本地仓库。
从项目维护者建立本身的feature分支,在feature分支上开发。
从项目维护者每次开发完成就git commit到本地仓库中本身的feature分支, 接着git push到远程仓库。
经过pull request从项目维护者合并本身feature分支到从项目维护者的远程仓库的master分支上。
从项目维护者在远程仓库把合并过的feature分支删除。
从项目维护者在本地仓库把合并过的feature分支删除。
从项目维护者在远程仓库经过pull request向主项目维护者的远程仓库的推送。
主项目维护者经过pull request获取从项目维护者的远程仓库的推送。
主项目维护者进行从项目维护者的远程仓库代码审查,测试。
主项目维护者确认无误后,能够直接合并到主项目维护者的远程仓库。