https://github.com/xirong/my-git/blob/master/git-workflow-tutorial.md

说明:

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

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

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

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

在第三部分 企业日常开发模式探索,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学习资料参见


  • git flow工作流的更多相关文章

    1. Git flow 工作流与规范

      概述 简版图: PS. 可能用到的命令: 1.从指定 commit拉出新分支   git checkout commitId -b 本地新branchName git checkout 9fbc3d0 ...

    2. git flow工作流实际项目实践

      公司项目的开发流程主要是这样 代码分为 develop分支 master分支 平时我开发的时候,主要在develop分支上改动 一般来讲,有以下几种改动方式 1.直接在develop上修改代码 这种一 ...

    3. SourceTree 实现 git flow 流程

      为什么使用 git 和 git flow,这篇文章 深入理解学习Git工作流 的内容相信能够给你一个完整的答案. 我们以使用SVN的工作流来使用git有什么不妥? git 方便的branch在哪里,团 ...

    4. 【GIT】Git Flow最佳实践

      Git Flow 工作流一共包含五种分支: 两个长期分支: 主分支 master:用于存放对外发布的版本,任何时候在这个分支拿到的,都是稳定的分布版 开发分支 develop:用于日常开发,存放最新的 ...

    5. Git Flow分支策略

      就像代码需要代码规范一样,代码管理同样需要一个清晰的流程和规范 Vincent Driessen 同学为了解决这个问题提出了 A Successful Git Branching Model 下面是G ...

    6. git + git flow 的简单介绍

      1.git简单实用 git:是一种分布式版本控制系统,因为其优秀的特性个人十分推崇. 1.1设置本机用户身份 git config -global user.name "userName&q ...

    7. [Tool] Git 使用 与 Git Flow

      目录 简介 Git 命令 Git Flow 简介 Git是目前世界上最先进的分布式版本控制系统(没有之一). Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Lin ...

    8. Git Flow 分支管理简述

      概述 Git 是什么 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的 ...

    9. git flow强制重新初始化

      Gitflow工作流定义了一个围绕项目发布的严格分支模型. git flow初始化命令: git flow init 关于各个分支的命名一路回车就可以了,如果不小心修改了默认的分支命名,后来又觉得不爽 ...

    随机推荐

    1. POJ 1380 Equipment Box (暴力枚举)

      Equipment Box 题目链接: http://acm.hust.edu.cn/vjudge/contest/130510#problem/B Description There is a la ...

    2. shell后台进程

      建立duplicate_removal.sh文件,内容如下:#!/bin/bashmysql -vvv -u root -p123456 test -e "truncate t_target ...

    3. vue2.0 之 douban (三)创建header组件

      1.分析 首页的header背景是绿色的,并且有一个搜索框,其他页面都是灰色的背景,在header的左侧,是一个返回按钮,右侧,有分享或者评论等图标,中间就是header的标题.我们先不做有搜索框的h ...

    4. Laravel 的Artisan 命令学习

      Laravel 的Artisan 命令学习 Artisan 是 Laravel 提供的 CLI(命令行接口),它提供了非常多实用的命令来帮助我们开发 Laravel 应用.前面我们已使用过 Artis ...

    5. 千万别在Java类的static块里写会抛异常的代码!

      public class Demo{ static{ // 模拟会抛异常的代码 throw new RuntimeException(); } } 如果你在Java类的static块里写这样会抛异常的 ...

    6. 裸BFS题若干

      1poj 3278 http://poj.org/problem?id=3278 #include<math.h> #include<algorithm> #include&l ...

    7. Fiddler代理抓取的接口的服务器返回出现"Response body is encoded. Click to decode. "

      参考与:https://blog.csdn.net/wsbl52006/article/details/53256705 解决办法: Rules > Remove All Encodings 勾 ...

    8. Jmeter的中英文互换

      1.jmeter的中英文互换:为了更深入的了解Jmeter,一般使用英文版的jmeter. 旧版本下载的默认中文较多.新版本5.1的下载后默认英文比较的多. 方法一: 选项->选择一种语言,但是 ...

    9. EditPlus配色方案

      找到配置文件:editplus_u.ini配置文件 [Options] Placement=2C00000002000000030000000083FFFF0083FFFFFFFFFFFFFFFFFF ...

    10. 黑群晖DSM 6.x 配置文件grub.cfg修改 mac地址/sn等修改

      新的DSM 6.x配置文件和以前的XPEnoboot的配置文件不一样了,我们可以通过OSFMount虚拟光驱软件打开img后再修改. 安装完成后运行OSFMount点击左下角-Mount new,选择 ...