Git 企业开发者教程
为什么要写这样一个面向企业开发者的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开源提供给社区。
相关文章:
- 微软研发云全家桶VSTS登陆中国
- Markdown/reST 文档发布流水线
- 几款好用的Git GUI客户端工具
- 使用 SSH 连接 TFS/VSTS 的GIT仓库
- GitHub + VSTS 开源代码双向同步
请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息
Git 企业开发者教程的更多相关文章
- GIT版本管理工具教程
目录 GIT版本管理工具教程 一 Git初始化 二 简单指令使用 基本操作 简单总结 三 Git进阶 Git三大区域 Git回滚 Git分支 Git工作流 四 Github代码管理仓库 第一步:注册G ...
- git使用简单教程-(转自linux人)
什么是Git Git是目前世界上最先进的分布式版本控制系统.最初由Linus Torvalds编写,用作Linux内核代码的管理.如果你是windows用户,看到这里你可能会担心"是不是只能 ...
- Git使用详细教程(一)
很久不发博客,最近有兴趣想写点东西,但 Live Writer 不支持从Word复制图片,疯狂吐槽下 Git使用详细教程(一) Git使用详细教程(二) 该教程主要是Git与IntelliJ IDEA ...
- ios开发--苹果企业开发者账号
苹果企业开发者账号添加多个开发成(组)员的方法 如果你们公司有一个帐号,你是管理员,加入组员的办法如下: 第一步:进入Member Center页 第二步:点击people,会见到 第三步:点击Inv ...
- 在Dropbox上搭建私有的Git仓库的教程
导读 Git版本控制系统需要一个服务器端,而GitHub上要想创建私有的Git服务器端仓库则触及到收费项目,于是这里我们利用Dropbox的免费空间,来看一下在Dropbox上搭建私有的Git仓库的教 ...
- git github 使用教程
参考文章:文章地址: http://wuyuans.com/2012/05/github-simple-tutorial/ github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般 ...
- git学习基础教程
分享一个git学习基础教程 http://pan.baidu.com/s/1o6ugkGE 具体在网盘里面的内容..需要的学习可以直接下.
- iOS企业开发者账号实现内部分发
前言 上个月由于公司开发的棋牌类游戏接近尾声,需要大量的苹果测试机来支持,之前只有一个公司开发者账号,每添加新的测试机都需要添加一次UDID,做了不少无用功,再加上本身外包性质的公司导致客户方面频繁更 ...
- git 入门教程之 git 私服搭建教程
git 私服搭建教程 前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基于上述两点原因,我 ...
随机推荐
- 基于MVC设计模式的Web应用框架:struts2的简单搭建(一)
Struts2的初步介绍 Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴.京东等互联网.政府.企业门户网站.虽然之前存在了很大的安全漏洞,在2013年让苹果.中国移动.中国联 ...
- PHP+Redis 实例【二】页面缓存 新玩法
今天算是认识到博客园里的审查团队多内幕了,哈哈,贴个图玩下. 气死宝宝了. 进入主题! 今天就不写什么功能性的了,换下口味说下关于页面级的缓存,应该怎么做. 相信有很多小伙伴查了百度,甚至google ...
- 并发容器之写时拷贝的 List 和 Set
对于一个对象来说,我们为了保证它的并发性,通常会选择使用声明式加锁方式交由我们的 Java 虚拟机来完成自动的加锁和释放锁的操作,例如我们的 synchronized.也会选择使用显式锁机制来主动的控 ...
- thinkphp实现文件的下载
首先需要看一下大家使用的Thinkphp的版本,不同的版本使用的方法不同,(在导入公共函数的时候方式不同) 我用的是thinkphp3.2.2版本的,因此直接使用import()函数,直接把使用thi ...
- HDU5804--Price List
Price List Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others) Tot ...
- CCF-201512-3-画图
问题描述 试题编号: 201512-3 试题名称: 画图 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASC ...
- nefu 115 循环节
斐波那契的整除 Problem:115 Time Limit:1000ms Memory Limit:65536K Description 已知斐波那契数列有如下递归定义,f(1)=1,f(2)=1, ...
- centos7 无法启动网络(service network restart)错误解决办法
centos7 无法启动网络(service network restart)错误解决办法: (以下方法均为网上COPY,同时感谢原博主分享) systemctl status network.ser ...
- snprintf 返回值陷阱 重新封装
snprintf()函数用于将格式化的数据写入字符串,其原型为: int snprintf(char *str, int n, char * format [, argument, ...]); st ...
- lodash源码分析之compact中的遍历
小时候, 乡愁是一枚小小的邮票, 我在这头, 母亲在那头. 长大后,乡愁是一张窄窄的船票, 我在这头, 新娘在那头. 后来啊, 乡愁是一方矮矮的坟墓, 我在外头, 母亲在里头. 而现在, 乡愁是一湾浅 ...