Git官网给出了三种分布式工作流程:

  • 集中式工作流程
  • 集成管理者工作流
  • 司令官与副官工作流

这里以私有gitserver服务器上的git-test项目为例,简单说明集中式工作流程。

基于分支的开发策略

分支简介

参考Git Pro

使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

使用Git开发的过程中,鼓励使用分支进行迭代开发,分支的创建、删除、合并非常简单,任何主题(新特性,bug,test,idea...)都可以在单独的分支上存在。

本地分支策略

参考Git Pro

Git管理的项目,有一个默认分支master,可以理解为项目的主分支,其他分支可以根据需要创建。

一般来说,master分支只负责版本发布,实际开发过程在类似于dev分支或develop的分支上完成。而每个新特性或每次迭代都在各自独立的分支上开发,最后合并到dev分支。

从服务器克隆项目

cd <work dir>
git clone git@gitserver:/git/git-test
cd git-test

设置跟踪分支并拉取内容

从远程克隆的项目只有master分支的内容,本地master分支默认跟踪远程的master分支,即origin/master。而本地dev分支跟踪远程dev分支需要手动设置。可以使用以下方式:

git checkout --track origin/dev

git checkout -b dev origin/dev

这样以来,本地dev分支和origin/dev就建立了联系,可以直接push或pull,可以用git branch -vv查看所有的跟踪分支。

要设置已有的本地分支跟踪一个刚刚拉取下来的远程分支,或者想要修改正在跟踪的上游分支,可以使用 -u 或 --set-upstream-to 选项运行 git branch 来显式设置:

git checkout dev
git branch -u origin/dev

本地开发

为了降低开发复杂度,强烈建议本地开发使用分支,每个新特性和迭代都可以建立新的分支,完成后合并到本地dev分支。

同步仓库

注意:

只能推送本地dev分支到远程dev分支,master分支只用于版本发布,可以定期从服务器拉取master分支以同步仓库内容。

由于是分布式开发,推送前一定要将其他人提交到库的内容合并到本地,这也可以避免推送时的冲突。有两种合并方式,一种是使用pull命令,一种是先fetch然后合并,pull直接合并远程分支的内容到本地,有一定的风险,推荐使用第二种。

fetch

git fetch origin

该命令会拉取origin的所有分支到本地,可以通过一个特殊的名字FETCH_HEAD来显示远程和本地的差异:

git log -p HEAD..FETCH_HEAD

也可以

git diff dev origin/dev

该命令会显示远程仓库内最新的内容,合并远程dev分支到本地可以使用merge。

merge

git checkout dev
git merge origin/dev

解决合并冲突可以参考Git Pro

rebase可以避免将开发的细节过程推送到服务器,提交信息显得比较清爽干净。但是,rebase只可以用于本地的分支合并,不要对在你的仓库外有副本的分支执行变基。这样会使其他人强制rebase自己的分支,最终会导致很多问题。

如果你遵循这条金科玉律,就不会出差错。 否则,人民群众会仇恨你,你的朋友和家人也会嘲笑你,唾弃你。

更多内容可以参考Git Pro的变基部分。

推送dev分支

git push origin dev

Git分布式工作流程的更多相关文章

  1. 【Git项目管理】分布式 Git - 分布式工作流程

    分布式 Git - 分布式工作流程 你现在拥有了一个远程 Git 版本库,能为所有开发者共享代码提供服务,在一个本地工作流程下,你也已经熟悉了基本 Git 命令.你现在可以学习如何利用 Git 提供的 ...

  2. git教程——工作流程

    Git 工作流程 本章节我们将为大家介绍 Git 的工作流程. 一般工作流程如下: 克隆 Git 资源作为工作目录. 在克隆的资源上添加或修改文件. 如果其他人修改了,你可以更新资源. 在提交前查看修 ...

  3. Git的工作流程

    git的工作流程为: 克隆Git资源作为工作目录 在克隆的资源上添加或者修改文件 如果别人修改了,你可以更新资源 在提交前查看修改 提交修改 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交 ...

  4. 4. Git基本工作流程

    4. Git基本工作流程 Git工作区域 向仓库中添加文件流程

  5. 1.Git起步-Git的三种状态以及三种工作区域、CVCS与DVCS的区别、Git基本工作流程

    1.Git基础 版本控制系统是一种用于记录一个或多个文件内容变化,以便将来查阅恢复特定版本修订情况的系统. Git是一种分布式版本控制系统(Distributed Version Control Sy ...

  6. 基于git的工作流程

    本文针对的是追求极致.快速的产品响应团队的.以下的观点和内容都是围绕这个主题,暂时不涉及个人学习和团队学习. 在说工作流程之间,想说一下我们平常工作中遇到的一些困惑或者说现象 在一个团队里,同时有好多 ...

  7. git的工作流程(分支合并)

    git支持很多种工作流程,我们采用的一般是这样,远程创建一个主分支,本地每人创建功能分支,日常工作流程如下: 去自己的工作分支$ git checkout work 工作.... 提交工作分支的修改$ ...

  8. Subversion/Git/ReviewBoard工作流程

    根据My (work)Git Workflow进行修改,在 Windows下进行测试,http://mojodna.net/2009/02/24/my-work-git-workflow.html 目 ...

  9. 理解Git的工作流程(转)

    英文原文:Understanding the Git Workflow 如果你不理解Git的设计动机,那你就会处处碰壁.知道足够多的命令和参数后,你就会强行让Git按你想的来工作,而不是按Git自己的 ...

随机推荐

  1. hibernate的反向生成改懒加载的地方

    改变懒加载只需要把生成的文件中的获取类型改为eager fetch = FetchType.EAGER @ManyToOne(fetch = FetchType.EAGER)//把懒加载换成饿加载模式 ...

  2. windows10安装tensorflow CPU版本

    1.先安装python3.6版本 a.安装完成后在cmd中输入python,如果出现python命令行模式,则说明python安装成功. 2.在cmd中输入pip3 install --upgrade ...

  3. 从mdb到crash

    本文面向使用过Solaris的mdb但是没有使用过Linux的crash的同学.比如说我自己,mdb用了很多年,现在全面转向Linux平台,于是很好奇Linux有没有类似的工具.熟悉Solaris的同 ...

  4. nextval 遍历ResultSet,行列要从1开始

    nextval nextval与序列关联,表示下一个,如:创建里一个序列seq_1:#序列一般表示第几行,起标识作用create sequence seq_1 increment by 1 start ...

  5. Web开发者的福利 30段超实用CSS代码

    1.花式连字符(&) 这个类应该在span元素里使用,并且里面包括&字符.它使用经典的serif字体和斜体来增强&符号. .amp { font-family: Baskerv ...

  6. Java - 方法的参数声明

    给方法的参数加上限制是很常见的,比如参数代表索引时不能为负数.对于某个关键对象引用不能为null,否则会进行一些处理,比如抛出相应的异常信息. 对于这些参数限制,方法的提供者必须在文档中注明,并且在方 ...

  7. 教你用go freetype根据用户昵称生成头像

    最近需要为用户服务添加一些新功能,其中就包括在注册时根据用户昵称生成头像这一点. 由于用户服务是用golang写的,google来google去都只找到freetype一个比较简单好用的库,其他比如I ...

  8. SmartGit破解使用的个人方法

    转自:https://www.cnblogs.com/nn839155963/p/5912788.html SmartGit是收费的,可以30天的试用期,30天试用期过后,smartgit 需要输入序 ...

  9. 六、yarn运行模式

    简介 spark的yarn运行模式根据Driver在集群中的位置分成两种: 1)yarn-client 客户端模式 2)yarn-cluster 集群模式 yarn模式和standalone模式不同, ...

  10. CodeForces 598A(水)

    还是要注意int和long long的范围,以及double型的问题 pow函数经常会报一个double型的错,参考这篇文章 http://blog.csdn.net/lawrencesgj/arti ...