Paste_Image.png
]](http://blog.jobbole.com/76861/)
Forking工作流和前面讨论的几种工作流有根本的不同。这种工作流不是使用单个服务端仓库作为『中央』代码基线,而让各个开发者都有一个服务端仓库。这意味着各个代码贡献者有2个Git
仓库而不是1个:一个本地私有的,另一个服务端公开的。
![](https://img.haomeiwen.com/i3166152/a7a1ff8c8a0c8b39.png)
工作方式
基本过程:
- 开发者在本地仓库中新建一个专门的分支开发功能。
- 开发者push分支修改到公开的Bitbucket仓库中。
- 开发者通过Bitbucket发起一个Pull Request。
- 团队的其它成员review code,讨论并修改。
- 项目维护者合并功能到官方仓库中并关闭Pull Request。
在功能分支工作流中使用Pull Request
![](https://img.haomeiwen.com/i3166152/5b3ebcb44231145b.png)
功能分支工作流只有一个公开的仓库,所以Pull Request的目的仓库和源仓库总是同一个。通常开发者会指定他的功能分支作为源分支,master分支作为目的分支。
收到Pull Request后,项目维护者要决定如何做。如果功能没问题,就简单地合并到master分支,关闭Pull Request。但如果提交的变更有问题,他可以在Pull Request中反馈。之后新加的提交也会评论之后接着显示出来。
在功能还没有完全开发完的时候,也可能发起一个Pull Request。比如开发者在实现某个需求时碰到了麻烦,他可以发一个包含正在进行中工作的Pull Request。其它的开发者可以在Pull Request提供建议,或者甚至直接添加提交来解决问题.
在Gitflow工作流中使用Pull Request
![](https://img.haomeiwen.com/i3166152/4cbcac5bd8ed8ca5.png)
新功能一般合并到develop分支,而发布和热修复则要同时合并到develop分支和master分支上。Pull Request
可能用做所有合并的正式管理。
在Forking工作流中使用Pull Request
由于各个开发有自己的公开仓库,Pull Request的源仓库和目标仓库不是同一个。源仓库是开发者的公开仓库,源分支是包含了修改的分支。如果开发者要合并修改到正式代码库中,那么目标仓库是正式仓库,目标分支master分支。
![](https://img.haomeiwen.com/i3166152/867e4320d26ead9e.png)
Pull Request也可以用于正式项目之外的其它开发者之间的协作。比如,如果一个开发者和一个团队成员一起开发一个功能,他们可以发起一个Pull Request,用团队成员的Bitbucket仓库作为目标,而不是正式项目的仓库。然后使用相同的功能分支作为源和目标分支。
![](https://raw.githubusercontent.com/quickhack/translations/master/git-workflows-and-tutorials/images/pull-request-forking-workflow-2.png)
2个开发者之间可以在Pull Request中讨论和开发功能。完成开发后,他们可以发起另一个Pull Request,请求合并功能到正式的master分支。在Forking工作流中,这样的灵活性让Pull Request成为一个强有力的协作工具。
网友评论