From b51fa3ba563c3716793ebcfe5790c353686c2bc4 Mon Sep 17 00:00:00 2001 From: Jerry Lee Date: Sun, 26 Jul 2015 19:48:59 +0800 Subject: [PATCH] add toc --- git-workflows-and-tutorials/README.md | 76 ++++++++++++++++++- git-workflows-and-tutorials/pull-request.md | 15 ++++ .../workflow-centralized.md | 18 ++++- .../workflow-feature-branch.md | 12 +++ .../workflow-forking.md | 13 ++++ .../workflow-gitflow.md | 14 ++++ 6 files changed, 143 insertions(+), 5 deletions(-) diff --git a/git-workflows-and-tutorials/README.md b/git-workflows-and-tutorials/README.md index c305dcf..9ecf457 100644 --- a/git-workflows-and-tutorials/README.md +++ b/git-workflows-and-tutorials/README.md @@ -4,12 +4,12 @@ :apple: 译序 ----------------- -工作流其实不是一个初级主题,背后的本质问题其实是有效的项目流程管理和高效的开发协同约定,不仅是`Git`或`SVN`等[`VCS`](http://zh.wikipedia.org/wiki/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6)或[`SCM`](http://zh.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86)工具的使用。 - 这篇指南以大家在`SVN`中已经广为熟悉使用的集中式工作流作为起点,循序渐进地演进到其它高效的分布式工作流,还介绍了如何配合使用便利的`Pull Request`功能,体系地讲解了各种工作流的应用。 行文中实践原则和操作示例并重,对于`Git`的资深玩家可以梳理思考提升,而新接触的同学,也可以跟着step-by-step操作来操练学习并在实际工作中上手使用。 +工作流其实不是一个初级主题,背后的本质问题其实是有效的项目流程管理和高效的开发协同约定,不仅是`Git`或`SVN`等[`VCS`](http://zh.wikipedia.org/wiki/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6)或[`SCM`](http://zh.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86)工具的使用。 + 关于`Git`工作流主题,网上体系的中文资料不多,主要是零散的操作说明,希望这篇文章能让你更深入理解并在工作中灵活有效地使用起来。 ***PS***: @@ -78,6 +78,76 @@ ![Workflows: Pull Requests](images/pull-request.png) +目录 ----------------- -        [集中式工作流 »](workflow-centralized.md) +- [译序](#apple-译序) +- [概述](#git工作流指南) +- [集中式工作流](workflow-centralized.md) + - [工作方式](workflow-centralized.md#beer-工作方式) + - [冲突解决](workflow-centralized.md#冲突解决) + - [示例](workflow-centralized.md#beer-示例) + - [有人先初始化好中央仓库](workflow-centralized.md#有人先初始化好中央仓库) + - [所有人克隆中央仓库](workflow-centralized.md#所有人克隆中央仓库) + - [小明开发功能](workflow-centralized.md#小明开发功能) + - [小红开发功能](workflow-centralized.md#小红开发功能) + - [小明发布功能](workflow-centralized.md#小明发布功能) + - [小红试着发布功能](workflow-centralized.md#小红试着发布功能) + - [小红在小明的提交之上`rebase`](workflow-centralized.md#小红在小明的提交之上rebase) + - [小红解决合并冲突](workflow-centralized.md#小红解决合并冲突) + - [小红成功发布功能](workflow-centralized.md#小红成功发布功能) + - [下一站](workflow-centralized.md#beer-下一站) +- [功能分支工作流](workflow-feature-branch.md) + - [工作方式](workflow-feature-branch.md#beer-工作方式) + - [`Pull Requests`](workflow-feature-branch.md#pull-requests) + - [示例](workflow-feature-branch.md#beer-示例) + - [小红开始开发一个新功能](workflow-feature-branch.md#小红开始开发一个新功能) + - [小红要去吃个午饭](workflow-feature-branch.md#小红要去吃个午饭) + - [小红完成功能开发](workflow-feature-branch.md#小红完成功能开发) + - [小黑收到`Pull Request`](workflow-feature-branch.md#小黑收到pull-request) + - [小红再做修改](workflow-feature-branch.md#小红再做修改) + - [小红发布她的功能](workflow-feature-branch.md#小红发布她的功能) + - [与此同时,小明在做和小红一样的事](workflow-feature-branch.md#与此同时小明在做和小红一样的事) + - [下一站](workflow-feature-branch.md#beer-下一站) +- [`Gitflow`工作流](workflow-gitflow.md) + - [工作方式](workflow-gitflow.md#beer-工作方式) + - [历史分支](workflow-gitflow.md#历史分支) + - [功能分支](workflow-gitflow.md#功能分支) + - [发布分支](workflow-gitflow.md#发布分支) + - [维护分支](workflow-gitflow.md#维护分支) + - [示例](workflow-gitflow.md#beer-示例) + - [创建开发分支](workflow-gitflow.md#创建开发分支) + - [小红和小明开始开发新功能](workflow-gitflow.md#小红和小明开始开发新功能) + - [小红完成功能开发](workflow-gitflow.md#小红完成功能开发) + - [小红开始准备发布](workflow-gitflow.md#小红开始准备发布) + - [小红完成发布](workflow-gitflow.md#小红完成发布) + - [最终用户发现`Bug`](workflow-gitflow.md#最终用户发现bug) + - [下一站](workflow-gitflow.md#beer-下一站) +- [`Forking`工作流](workflow-forking.md) + - [工作方式](workflow-forking.md#beer-工作方式) + - [正式仓库](workflow-forking.md#正式仓库) + - [`Forking`工作流的分支使用方式](workflow-forking.md#forking工作流的分支使用方式) + - [示例](workflow-forking.md#beer-示例) + - [项目维护者初始化正式仓库](workflow-forking.md#项目维护者初始化正式仓库) + - [开发者`fork`正式仓库](workflow-forking.md#开发者fork正式仓库) + - [开发者克隆自己`fork`出来的仓库](workflow-forking.md#开发者克隆自己fork出来的仓库) + - [开发者开发自己的功能](workflow-forking.md#开发者开发自己的功能) + - [开发者发布自己的功能](workflow-forking.md#开发者发布自己的功能) + - [项目维护者集成开发者的功能](workflow-forking.md#项目维护者集成开发者的功能) + - [开发者和正式仓库做同步](workflow-forking.md#开发者和正式仓库做同步) + - [下一站](workflow-forking.md#beer-下一站) +- [`Pull Requests`](pull-request.md) + - [解析`Pull Request`](pull-request.md#解析pull-request) + - [工作方式](pull-request.md#beer-工作方式) + - [在功能分支工作流中使用`Pull Request`](pull-request.md#在功能分支工作流中使用pull-request) + - [在`Gitflow`工作流中使用`Pull Request`](pull-request.md#在gitflow工作流中使用pull-request) + - [在`Forking`工作流中使用`Pull Request`](pull-request.md#在forking工作流中使用pull-request) + - [示例](pull-request.md#beer-示例) + - [小红`fork`正式项目](pull-request.md#小红fork正式项目) + - [小红克隆她的`Bitbucket`仓库](pull-request.md#小红克隆她的bitbucket仓库) + - [小红开发新功能](pull-request.md#小红开发新功能) + - [小红`push`功能到她的`Bitbucket`仓库中](pull-request.md#小红push功能到她的bitbucket仓库中) + - [小红发起`Pull Request`](pull-request.md#小红发起pull-request) + - [小明review `Pull Request`](pull-request.md#小明review-pull-request) + - [小红补加提交](pull-request.md#小红补加提交) + - [下一站](pull-request.md#beer-下一站) diff --git a/git-workflows-and-tutorials/pull-request.md b/git-workflows-and-tutorials/pull-request.md index 3b4f115..ca8de16 100644 --- a/git-workflows-and-tutorials/pull-request.md +++ b/git-workflows-and-tutorials/pull-request.md @@ -1,6 +1,21 @@ `Pull Request`工作流 ======================= +- [解析`Pull Request`](#解析pull-request) +- [工作方式](#beer-工作方式) + - [在功能分支工作流中使用`Pull Request`](#在功能分支工作流中使用pull-request) + - [在`Gitflow`工作流中使用`Pull Request`](#在gitflow工作流中使用pull-request) + - [在`Forking`工作流中使用`Pull Request`](#在forking工作流中使用pull-request) +- [示例](#beer-示例) + - [小红`fork`正式项目](#小红fork正式项目) + - [小红克隆她的`Bitbucket`仓库](#小红克隆她的bitbucket仓库) + - [小红开发新功能](#小红开发新功能) + - [小红`push`功能到她的`Bitbucket`仓库中](#小红push功能到她的bitbucket仓库中) + - [小红发起`Pull Request`](#小红发起pull-request) + - [小明review `Pull Request`](#小明review-pull-request) + - [小红补加提交](#小红补加提交) +- [下一站](#beer-下一站) + `Pull Requests`是`Bitbucket`上方便开发者之间协作的功能。 提供了一个用户友好的`Web`界面,在集成提交的变更到正式项目前可以对变更进行讨论。 diff --git a/git-workflows-and-tutorials/workflow-centralized.md b/git-workflows-and-tutorials/workflow-centralized.md index 70b13d5..d433590 100644 --- a/git-workflows-and-tutorials/workflow-centralized.md +++ b/git-workflows-and-tutorials/workflow-centralized.md @@ -1,6 +1,20 @@ 集中式工作流 ================================= +- [工作方式](#beer-工作方式) + - [冲突解决](#冲突解决) +- [示例](#beer-示例) + - [有人先初始化好中央仓库](#有人先初始化好中央仓库) + - [所有人克隆中央仓库](#所有人克隆中央仓库) + - [小明开发功能](#小明开发功能) + - [小红开发功能](#小红开发功能) + - [小明发布功能](#小明发布功能) + - [小红试着发布功能](#小红试着发布功能) + - [小红在小明的提交之上`rebase`](#小红在小明的提交之上rebase) + - [小红解决合并冲突](#小红解决合并冲突) + - [小红成功发布功能](#小红成功发布功能) +- [下一站](#beer-下一站) + ![Git Workflows: SVN-style](images/git-workflow-svn.png) 转到分布式版本控制系统看起来像个令人生畏的任务,但不改变已用的工作流你也可以用上`Git`带来的收益。团队可以用和`Subversion`完全不变的方式来开发项目。 @@ -22,8 +36,8 @@ ![git-workflow-svn-push-local](images/git-workflow-svn-push-local.png) -:beer: 冲突解决 ---------------------- +### 冲突解决 + 中央仓库代表了正式项目,所以提交历史应该被尊重且是稳定不变的。如果开发者本地的提交历史和中央仓库有分歧,`Git`会拒绝`push`提交否则会覆盖已经在中央库的正式提交。 diff --git a/git-workflows-and-tutorials/workflow-feature-branch.md b/git-workflows-and-tutorials/workflow-feature-branch.md index 1b352e5..d4a52d7 100644 --- a/git-workflows-and-tutorials/workflow-feature-branch.md +++ b/git-workflows-and-tutorials/workflow-feature-branch.md @@ -1,6 +1,18 @@ 功能分支工作流 ====================== +- [工作方式](#beer-工作方式) + - [`Pull Requests`](#pull-requests) +- [示例](#beer-示例) + - [小红开始开发一个新功能](#小红开始开发一个新功能) + - [小红要去吃个午饭](#小红要去吃个午饭) + - [小红完成功能开发](#小红完成功能开发) + - [小黑收到`Pull Request`](#小黑收到pull-request) + - [小红再做修改](#小红再做修改) + - [小红发布她的功能](#小红发布她的功能) + - [与此同时,小明在做和小红一样的事](#与此同时小明在做和小红一样的事) +- [下一站](#beer-下一站) + ![](images/git-workflow-feature-branch-1.png) 一旦你玩转了[集中式工作流](workflow-centralized.md),在开发过程中可以很简单地加上功能分支,用来鼓励开发者之间协作和简化交流。 diff --git a/git-workflows-and-tutorials/workflow-forking.md b/git-workflows-and-tutorials/workflow-forking.md index 9b2fb8f..5f17e3d 100644 --- a/git-workflows-and-tutorials/workflow-forking.md +++ b/git-workflows-and-tutorials/workflow-forking.md @@ -1,6 +1,19 @@ `Forking`工作流 ======================= +- [工作方式](#beer-工作方式) + - [正式仓库](#正式仓库) + - [`Forking`工作流的分支使用方式](#forking工作流的分支使用方式) +- [示例](#beer-示例) + - [项目维护者初始化正式仓库](#项目维护者初始化正式仓库) + - [开发者`fork`正式仓库](#开发者fork正式仓库) + - [开发者克隆自己`fork`出来的仓库](#开发者克隆自己fork出来的仓库) + - [开发者开发自己的功能](#开发者开发自己的功能) + - [开发者发布自己的功能](#开发者发布自己的功能) + - [项目维护者集成开发者的功能](#项目维护者集成开发者的功能) + - [开发者和正式仓库做同步](#开发者和正式仓库做同步) +- [下一站](#beer-下一站) + `Forking`工作流和前面讨论的几种工作流有根本的不同。 这种工作流不是使用单个服务端仓库作为『中央』代码基线,而让各个开发者都有一个服务端仓库。 这意味着各个代码贡献者有2个`Git`仓库而不是1个:一个本地私有的,另一个服务端公开的。 diff --git a/git-workflows-and-tutorials/workflow-gitflow.md b/git-workflows-and-tutorials/workflow-gitflow.md index e0dd704..65ed6a0 100644 --- a/git-workflows-and-tutorials/workflow-gitflow.md +++ b/git-workflows-and-tutorials/workflow-gitflow.md @@ -1,6 +1,20 @@ `Gitflow`工作流 ============================ +- [工作方式](#beer-工作方式) + - [历史分支](#历史分支) + - [功能分支](#功能分支) + - [发布分支](#发布分支) + - [维护分支](#维护分支) +- [示例](#beer-示例) + - [创建开发分支](#创建开发分支) + - [小红和小明开始开发新功能](#小红和小明开始开发新功能) + - [小红完成功能开发](#小红完成功能开发) + - [小红开始准备发布](#小红开始准备发布) + - [小红完成发布](#小红完成发布) + - [最终用户发现`Bug`](#最终用户发现bug) +- [下一站](#beer-下一站) + ![Git Workflows: Gitflow Cycle](images/git-workflows-gitflow.png) 这节介绍的[`Gitflow`工作流](http://nvie.com/posts/a-successful-git-branching-model/)借鉴自在[nvie](http://nvie.com/)的*Vincent Driessen*。