为什么要写这样一个面向企业开发者的Git教程?这个问题也困扰我自己很久。其实我使用git的时间也不短了,但是就和正在阅读本文的每一位一样,常用的基本就是那么几个(git clone, git push)等等。然而git其实有着非常强大的功能,如果不能系统的掌握使用这些功能的技能,我们很容易在一些场景下不知所措,比如以下这些:

– 拉取了共享分支后出现了冲突,怎么合并?
– 到底该不该使用分支?
– 修改了分支上的代码,但是需要临时切换到另外一个分支上工作,可是当前的代码还不能提交,怎么办?
– 团队开始使用拉取请求(Pull Request)了?这是个什么鬼?
– 改了代码,直接运行git commit为啥就不工作呢?
– 怎么样才能把远程分支下载到本地开始工作?
– 变基(rebase)和合并(merge)到底有什么区别?
– 我需要别人分支上的几个改动,怎么才能只获取这几个改动而不合并所有代码?
– 如何比较文件,分支?如何回退代码?
– 我们的代码库很大,如何才能正确切换到Git?
– Git如何能够帮助我们更安全,高效的发布?

在互联网上其实有很多的Git教程,但是太过零散,不成体系,特别是没有考虑到企业开发者所面临的许多具体而实际的问题。我希望通过这套教程,解决企业开发者在使用Git过程中所遇到的诸多疑问,让更多的团队能够享受到Git所带来的良好开发体验,让大家能够真正在大规模复杂项目中将Git的优势发挥出来。我会将我们在给各种企业进行研发管理咨询中所积累的经验以及我们的解决方案融入到这套教程中,相信其中的很多场景一定会对你有所帮助。

这个教程会分成4个部分

1. 基础篇:我们一起了解Git的历史,分布式版本控制系统的特点和优势,决定是否git真的适合你。我们也将完成一些初始化的工作,比如:安装和配置Git工具,介绍几个我常用的Git工具,对你的本地Git环境进行初始化操作。最后我们将完成一些常见的Git操作,让你可以开始在日常工作中开始使用Git。如果你还在纠结以上那些问题,不要担心,你必须勇敢的迈出这一步,因为Git已经是全球开发人员公认的最好的版本控制工具,相信你遇到的问题他人都已经遇到过,也一定都有解决的办法。

  • 为什么要使用版本控制系统
  • Git 分布式版本控制系统的优势
  • Git 安装和设置
  • 初始化Git存储库(Repo)
  • 起步 1 – 创建分支和保存代码
  • 起步 2 – 了解Git历史记录
  • 起步 3 – 拉取请求 Pull Request 工作机制

2. 进阶篇:我们一起了解Git最常用的一系列功能,让你可以开始更加得心应手的完成越加复杂的开发工作,这个时候你会逐渐爱上这个小小的工具,开始欲罢不能;但是你要记住,淹死的都是会游泳的,在你还不够了解一些复杂的功能的时候,不要随意尝试,因为这时你的破坏能力已经足够毁掉你辛苦工作很久的代码了。这一篇中我们会一起针对很多困扰你的问题找到解决方案,让你真正成为一名git高手。为了满足不同用户的口味,我会分别使用命令行和 Visual Studio 两种工具来完成这一篇的所有操作,确保键盘手和鼠标手都能得到满足。

  • 使用已有Git Repo提交和共享代码
  • 创建新的Git Repo
  • 理解Git提交(commit)工作机制
  • 使用Git分支(branch)进行工作
  • 使用Git推送(push)共享代码
  • 使用Git获取/拉取(fetch/pull)更新代码
  • 使用拉取请求(Pull Request)进行代码检视
  • 使用Git变基(rebase)更新代码
  • 使用Git提交拣选(cherry pick)功能在分之间复制改动
  • 解决合并冲突(merge conflict)
  • 撤销改动
  • 忽略文件
  • 使用Git历史记录比较文件,分支或者获取历史版本

3. Git企业开发者篇:Git起源于开源软件Linux的开发过程,因此在开源社区中广泛流行,也因此很多企业开发者对其敬而远之,感觉无法满足企业开发的诉求。在这一篇中,我们将一起探讨很多企业开发者更加关心的话题,比如:权限管理,Repo分库规划,大规模团队的Git工作流程,与敏捷/瀑布式等不同开发模式的配合,与持续集成/持续部署流水线的配合等对于企业开发非常重要的话题。帮助你将这个最棒的版本控制工具在你复杂的企业开发场景中使用起来。同时我们也将探讨如何在大规模团队中引入git的一些策略性思考。

  • 在VSTS/TFS上创建Git仓库
  • 迁移已有代码库到Git仓库,如:SVN,TFVC
  • Git服务器的权限管理
  • Git分库规则
  • 大规模团队的Git配置管理流程
  • 使用Git支持敏捷/瀑布式开发流程
  • Git与持续交付(配置持续集成和持续部署)

4. Git分支策略篇:在了解了git强大的分支功能后,如何能够设计出最为高效的分支策略就是困扰很多开发团队的问题。在这一篇中我们将专门探讨如何针对不同项目/产品的交付方式和团队结构设计不同的分支策略,满足各种规模团队的不同诉求。

  • Git 分支策略设计的原则,调试单元,部署单元,测试单元
  • Git 与团队结构,产品/项目发布特性,产品生命周期
  • Git 拉取请求与可靠持续交付
  • Git 分叉(Fork)与分支(Branch)的区别
  • 传统分支模式与特性分支模式的比较
  • 特性分支+拉取请求+质量门模式
  • 混用分叉(fork)与特性分支(feature branch)

在这个教程中,我们将使用 Visual Studio Team Services (VSTS) /Team Foundation Server(TFS) 作为我们的Git服务器。为什么不采用GitHub?这一定是你在想的问题!因为这一系列文章的目标用户是企业开发者,而VSTS提供了企业开发者所需要的全生命周期管理能力,我们在4个篇章逐渐深入的过程中你就会体会到这种端到端工具所带来的好处。我一直都认为,一个企业的软件交付效率中最重要的环节永远的是编码过程,因为这才是软件交付的核心,没有任何的管理实践可以替代开发人员自由自在的编写代码所带来的效率提升。当然,如果你不使用VSTS/TFS也完全不必担心,这个教程中的大多数内容同时适用于任何Git服务器,包括GitHub, GitLab, BitBucket等大家常用的环境。

本系列教程将使用Markdown编写,同时发布于 DevOps 文档中心, DevOps公众号和博客,并且文档和所有的示例代码都将通过GitHub开源提供给社区。

相关文章:


请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

Git 企业开发者教程的更多相关文章

  1. GIT版本管理工具教程

    目录 GIT版本管理工具教程 一 Git初始化 二 简单指令使用 基本操作 简单总结 三 Git进阶 Git三大区域 Git回滚 Git分支 Git工作流 四 Github代码管理仓库 第一步:注册G ...

  2. git使用简单教程-(转自linux人)

    什么是Git Git是目前世界上最先进的分布式版本控制系统.最初由Linus Torvalds编写,用作Linux内核代码的管理.如果你是windows用户,看到这里你可能会担心"是不是只能 ...

  3. Git使用详细教程(一)

    很久不发博客,最近有兴趣想写点东西,但 Live Writer 不支持从Word复制图片,疯狂吐槽下 Git使用详细教程(一) Git使用详细教程(二) 该教程主要是Git与IntelliJ IDEA ...

  4. ios开发--苹果企业开发者账号

    苹果企业开发者账号添加多个开发成(组)员的方法 如果你们公司有一个帐号,你是管理员,加入组员的办法如下: 第一步:进入Member Center页 第二步:点击people,会见到 第三步:点击Inv ...

  5. 在Dropbox上搭建私有的Git仓库的教程

    导读 Git版本控制系统需要一个服务器端,而GitHub上要想创建私有的Git服务器端仓库则触及到收费项目,于是这里我们利用Dropbox的免费空间,来看一下在Dropbox上搭建私有的Git仓库的教 ...

  6. git github 使用教程

    参考文章:文章地址: http://wuyuans.com/2012/05/github-simple-tutorial/ github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般 ...

  7. git学习基础教程

    分享一个git学习基础教程 http://pan.baidu.com/s/1o6ugkGE 具体在网盘里面的内容..需要的学习可以直接下.

  8. iOS企业开发者账号实现内部分发

    前言 上个月由于公司开发的棋牌类游戏接近尾声,需要大量的苹果测试机来支持,之前只有一个公司开发者账号,每添加新的测试机都需要添加一次UDID,做了不少无用功,再加上本身外包性质的公司导致客户方面频繁更 ...

  9. git 入门教程之 git 私服搭建教程

    git 私服搭建教程 前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基于上述两点原因,我 ...

随机推荐

  1. Python之文件的基本操作

    在python中,对文件的基本操作一共有如下四种: 1.打开文件 file_obj = open("文件路径","模式") 常用的打开文件模式有: r:以只读方 ...

  2. php加密解密处理类

    [PHP]代码 <?php /*=========================================================== = 版权协议: = GPL (The GN ...

  3. phython廖雪峰

    这是小白的Python新手教程,具有如下特点: 中文,免费,零起点,完整示例,基于最新的Python 3版本. Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学 ...

  4. PHP 面试时常考的文件操作函数

    前两天面试的时候,笔试要求写一些文件操作类函数,什么遍历目录获取文件扩展名之类的,回来后大致总结了一下PHP中一些常见的文件操作函数分享一下. 1.使用递归删除目录及目录下所有文件的方法. funct ...

  5. MEAN 全栈开发 ——实现简单博客

    最近在学习MEAN全栈开发的过程中,写了一个小程序就当练练手熟悉一下怎么去组合强大的功能. 废话不多说,直接上文件预览: 整体文件结构: 其中,public文件夹存放了img,js,css文件,其中的 ...

  6. java 之 命令模式(大话设计模式)

    命令模式,笔者一直以为当我们开发的过程中基本上很难用到,直到维护阶段或者重构阶段,我们会发现有些撤销命令和追加命令比较频繁时,自然而然就用到命令模式. 先看下类图 大话设计模式-类图 简单说下类图,最 ...

  7. 42.Linux应用调试-初步制作系统调用(用户态->内核态)

    1首先来讲讲应用程序如何实现系统调用(用户态->内核态)? 我们以应用程序的write()函数为例: 1)首先用户态的write()函数会进入glibc库,里面会将write()转换为swi(S ...

  8. cronlog分割tomcat catalina.out日志

    Tomcat 下日志文件 catalina.out 过大,几百兆或几个G,进而造成再也无法写入更多的日志内容,至使 Tomcat 无法处理请求,所以依靠cronlog来分割: 具体步骤如下: 1.安装 ...

  9. SharePoint Online Add-in 开发简介

    作者:陈希章 发表于 2017年12月22日 在 再谈SharePoint大局观 中我提到了SharePoint开发的一些新的变化,这一篇文章我将讲解SharePoint Add-in开发.其实早在2 ...

  10. webStorm和Sublime使用列编辑命令

    webStorm可以像Sublime一样使用列编辑,只是区别在于webStorm只可以编辑连续列表. 按住alt键鼠标选择一列,然后输入文字就会编辑多行,这个功能很赞,比较实用(按住ALT键选中之后, ...