为什么要写这样一个面向企业开发者的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. 万能动态库调用工具IDMA(InvokeDllMethodsAdvance)

    万能动态库调用工具IDMA 开发者:马兆瑞     QQ/微信:624762543 百度云下载链接:https://pan.baidu.com/s/1skW5W4H CSDN下载链接:http://d ...

  2. windows下python3.6 32bit 安装django

    在Windows下python3.6安装Django1.11.3 1.首先下载地址:https://pypi.python.org/pypi/Django/1.11.3 pip install dja ...

  3. Logistic 回归模型 第一遍阅读笔记

    MLE :最大似然估计,求得的这套参数估计能够通过指定模型以最大概率在线样本观测数据 必须来自随机样本,自变量与因变量之间是线性关系 logistic 回归没有关于自变量分布的假设条件,自变量可以连续 ...

  4. Libevent(2.1.8)中的事件结构和管理

    Libevent(2.1.8)中的事件结构体 这里的libevent版本为 2.1.8 . libevent中事件的结构体struct event,定义在event_struct.h 中, 这里我们简 ...

  5. 使用python将多个excel合并

    最近看视频学习,老师布置了个作业,关于如何使用python将多个excel进行合并,老师写的代码我感觉比较复杂,下面是我自己改良之后较简单的方式. 实现这个功能主要有两种方法,一种是用xlwd,xls ...

  6. Java集合(2)一 ArrayList 与 LinkList

    目录 Java集合(1)一 集合框架 Java集合(2)一 ArrayList 与 LinkList Java集合(3)一 红黑树.TreeMap与TreeSet(上) Java集合(4)一 红黑树. ...

  7. POJ 3061 Subsequence 尺取法 POJ 3320 Jessica's Reading Problem map+set+尺取法

    Subsequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13955   Accepted: 5896 Desc ...

  8. PHP核心技术

    一.PHP核心技术 1.写出一个能创建多级目录的PHP函数(新浪网技术部) <?php /** * 创建多级目录 * @param $path string 要创建的目录 * @param $m ...

  9. Express4.x API (二):Request (译)

    写在前面 最近学习express想要系统的过一遍API,www.expressjs.com是express英文官网(进入www.epxressjs.com.cn发现也是只有前几句话是中文呀~~),所以 ...

  10. TCP的十一种状态与三次握手分析(有图)

    我们知道TCP是面向连接的,我们只知道有连接断开,其实内部还有一些比较复杂的状态.去了解各个状态之间的切换有助于我们更加深入的了解TCP.下面我们就来分析各个状态. 1.如下图示(图源百度)图中显示出 ...