个人在学习Git工作流的过程中,从原有的 SVN 模式很难完全理解Git的协作模式,直到有一天我看到了下面的文章,好多遗留在心中的困惑迎刃而解:

  • 我们以使用SVN的工作流来使用Git有什么不妥?
  • Git方便的branch在哪里,团队多人如何协作?冲突了怎么办?如何进行发布控制?
  • 经典的master-发布、develop-主开发、hotfix-bug修复如何避免代码不经过验证上线?
  • 如何在GitHub上面与他人一起协作,star-fork-pull request是怎样的流程?

我个人很感激这篇文章,所以进行了整理,希望能帮到更多的人。整篇文章由 xirong 整理自 oldratlee 的GitHub,方便统一的学习回顾,在此感谢下面两位的贡献。

原文链接:Git Workflows and Tutorials
简体中文:由 oldratlee 翻译在 GitHub 上 Git工作流指南

在第三部分 企业日常开发模式探索,xirong 结合自己所在公司使用git的版本分支开发过程,进行了总结,欢迎大家提出更好的建议。

在第四部分 开发工作流的讨论 中,引用了几篇文章,包括 Github 的开发流程以及 Thoughtworkers 工程师发表的「Gitflow 有害论」,旨在表名流程并不是唯一的,适合自己当前团队的才是最好的。


一、译序

这篇指南以大家在SVN中已经广为熟悉使用的集中式工作流作为起点,循序渐进地演进到其它高效的分布式工作流,还介绍了如何配合使用便利的Pull Request功能,系统地讲解了各种工作流的应用。 如果你Git用的还不多,可以从前面的讲的工作流开始操练。在操作过程中去感受指南的讲解:解决什么问题、如何解决问题,这样理解就深了,也方便活用。

行文中实践原则和操作示例并重,对于Git的资深玩家可以梳理思考提升,而新接触的同学,也可以跟着step-by-step操练学习并在实际工作中上手使用。

工作流其实不是一个初级主题,背后的本质问题是 有效的项目流程管理 和 高效的开发协同约定,而不仅仅是GitSVNVCSSCM工具的使用。

关于Git工作流主题,网上体系的中文资料不多,主要是零散的操作说明,希望这篇文章能让你更深入理解并在工作中灵活有效地使用起来。

Gitflow工作流是经典模型,处于核心位置,体现了工作流的经验和精髓。随着项目过程复杂化,你会感受到这个工作流中的深思熟虑和威力!

Forking工作流是分布式协作的(GitHub风格)可以先看看GitHub的Help:Fork A RepoUsing pull requests 。照着操作,给一个GitHub项目贡献你的提交,有操作经验再看指南容易意会。指南中给了自己实现Fork的方法Fork就是服务端的克隆。在指南的操练中使用代码托管服务(如GitHubBitbucket),可以点一下按钮就让开发者完成仓库的fork操作。

PS

文中Pull Request的介绍用的是Bitbucket代码托管服务,由于和GitHub基本一样,如果你用的是GitHub(我自己也主要使用GitHub托管代码),不影响理解和操作。

PPS

更多Git学习资料参见