冲突的提示消息总是让开发人员很沮丧。努力解决每个合并的冲突是每个开发人员最讨厌的事情之一,尤其是当你准备进行生产部署时。
在这种时候,有正确的 Git 工作流程设置可以为你的开发工作流程带来很多好处。
当然,拥有正确的git工作流并不能解决所有问题。但是这是朝正确方向迈进的一步。毕竟,在每个团队都在远程工作的情况下,在不会有扰乱的代码库中共同开发功能非常重要。
设置方法取决于您正在处理的项目,团队的发布计划,团队规模等。 在本文中,我们将为您介绍5种不同的git工作流,及其优点,缺点以及何时使用它们。
1. 基本 git 工作流
最基本的git工作流是只有一个分支:master分支。开发人员直接把更改提交到master分支上,以部署到staging和生产环境。
通常不建议使用此工作流,除非您正在开发辅助项目并希望快速上手。
由于只有一个分支,因此这里实际上没有任何过程。这样一来,您就可以轻松开始使用Git。但是,使用此工作流程时需要记住一些缺点:
- 在代码上进行协作会导致多种冲突;
- 很可能会把有bug的代码发到生产
- 维护干净的代码更加困难
2. Git 功能分支工作流
当有多个开发人员在同一个代码库上工作时,Git 功能分支(feature branch)工作流是必须的。
假设您有一个正在开发一项新功能的开发人员。另一个开发人员正在开发第二个功能。现在,如果两个开发人员都在同一个分支中工作并向其提交,这将会导致代码库陷入混乱,并产生大量冲突。
为了避免这种情况,两个开发人员可以从 master 分支创建两个单独的分支,并分别处理其功能。完成功能后,他们可以将各自的分支合并到 master 分支,然后进行部署,而不必等待第二个功能完成。
使用此工作流的优点是,git 功能分支工作流使你可以在代码上进行协作,而不必担心代码冲突。
3. Develop分支的Git功能工作流
这个工作流是开发团队中比较流行的工作流之一。它与 Git 功能分支工作流相似,但它的开发(develop)分支与master分支并行添加。
在这个工作流中,master分支始终反映生产就绪状态。每当团队想要部署到生产时,他们都会从 master 分支部署它。
开发分支反映了针对下一发行版本的最新交付的开发状态。开发人员从develop分之创建分支,并开发新功能。功能完成后,对其进行测试,合并到develop分支,如果有下一步合并的话再对develop分支代码进行测试,然后合并到master分支。
该工作流的优势在于,它事团队能够一致地合并新功能,在staging环境测试,然后部署到生产环境中。尽管维护代码更加容易,但是对于某些团队来说,这样做可能会感到有些冗长,因为感觉要经过一个冗长的过程。
4. gitflow 工作流
gitflow 工作流很类似于上面讨论的工作流再结合两个其他分支:release分支和hot-fix分支。
hot-fix 分支
hot-fix分支是从 master 分支创建的唯一分支,并且直接合并到 master 分支,而不是develop分支。只在必须快速修改生产问题时使用这个分支。这个分支的一个优势在于:它可以使你快速部署生产问题,而无需中断其他人的工作流程,也不必等待下一个发布周期。
一旦把修订合并到 master 分支并部署后,应将其合并到 develop 和 当前的 release 分支。这样做是为了确保任何进行从develop分支拉取的新的功能分支都有最新的代码。
release 分支
在 develop 分支合并了所有为发布计划开发的功能后,release 分支从 develop 分支 fork 出来。
没有与新功能相关的代码添加到 release 分支。仅将与发行版本相关的代码添加到release分支。例如,与此版本相关的文档,错误修复和其他任务都添加到此分支。
该分支与 master 合并并部署到生产环境后,它也重新合并到 develop 分支,以便从 develop 拉取新功能时具有最新代码。
这个工作流由 Vincent Driessen 首次发布并广受欢迎,此后已被具有特定发布周期的组织广泛使用。
因为 git-flow 是对 Git 的包装,因此您可以在当前仓库中安装 git-flow。这是一个简单的过程,除了为你创建分支外,它不会更改仓库中的任何内容。
要在 Mac 电脑上安装,在终端执行 brew install git-flow。
要在 Windows 电脑上安装,需要下载安装 git-flow。安装完成后,运行 git flow init 来在项目中使用。
5. Git Fork 工作流
Fork 工作流在开源软件的团队中很流行。
这个工作流通常像下面这样:
- 开发人员从开源软件的官方仓库中 fork。在他们的账户中创建此仓库的副本。
- 然后,开发人员将仓库从其账户中克隆到其本地系统。
- 官方仓库的远程路径已添加到克隆到本地系统的仓库中。
- 开发者创建一个新的功能分支,该分支在其本地系统中创建,进行更改并提交。
- 这些更改以及分支将被推送到其账户上开发人员的仓库副本。
- 打开从这个分支到官方仓库的 pull 请求。
- 官方仓库的管理者检查更改并批准更改以合并到官方仓库中。
自动化 Git 工作流以提高生产力
开发人员必须不断努力的事情之一就是更新项目管理工具,以使团队成员更新到最新代码。因此,在 Zepel,开发人员实现了工作流程自动化,因此他们可以将更多的时间花在构建软件上。
这是我们使 git 工作流自动化以使所有人保持同步的方式:
因为 Zepel 与 GitHub,Bitbucket 和 GitLab 进行了深度集成,我们在内部使用 GitHub。因此,一旦我们将 GitHub 与 Zepel 集成在一起,我们的开发团队就会在 Zepel 中设置 git 流程自动化。以下是现在的样子:
你自己的工作流!
我在本文中展示的 git 工作流是一些针对开发团队的最受欢迎且工作效率最高的工作流的示例。一些团队为 staging 创建一个分支,该分支非常适合他们。