### 版本控制系统
> [版本控制](https://baike.baidu.com/item/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6)是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。
#### [主要的功能](http://juke.outofmemory.cn/entry/299988)
* 回到过去(回退)
* 改变历史(错误修复)
* 古今对比(文件差异)
* 并行开发(多人协作)
* 谁动了我的代码(信息记录)
##### 三大分类
* LVCS (Local VCS) - 本地版本控制系统
> 本地建立仓库
> 不适合多人协作(缺点)
* CVCS (Center VCS) - 中心仓库版本控制系统
> 远程中心仓库
> 必须联网(缺点)
* DVCS (Distributed VCS) - 分布式版本控制系统
> 分布式存储
> 本地仓库
> 强大的分支机制
##### Git简史
[同生活中伟大的事物一样,Git诞生于一个极富纷争大举创新的时代](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E7%AE%80%E5%8F%B2)。创造者是Linus,只用了两周时间...。
*****
1991年9月,那年他21,我还只是个1岁的孩子...当时操作系统跟现在买房一样,Unix等操作系统被炒的高高在上,动不动就是上万~ [但是,他不差钱,买了就买了,但他一点都不满意—— 昂贵,保守,还不好用。恰巧,操作系统 Minix ( UNIX 的变种 )问世了](http://www.sohu.com/a/123399547\_486809)。很快Linus就玩起了Minix。后来实在无法忍受Minix的缺点,他就想要自己编写一个免费又强大的系统....于是Linux就诞生了... 后续发展状态,很多大公司都在使用。腾讯、百度、阿里、微软、Facebook都是Linux系统的服务器,Android、Oracle也是基于Linux内核...
*****
开源的Linux问世了,当然是需要维护更新啦。在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码(累不累)~ 其实当时也存在一些免费的版本控制系统CVS、SVN,但为什么不用呢?因为Linus坚定地反对CVS和SVN,认为这些集中式的版本控制系统不但速度慢,而且必须联网才能使用,也有一些商用的版本控制系统,但那是付费的,跟Linux的开源精神不符...
*****
到了2002年,绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(他估摸很享受),后来Larry说服Linus在内核开发中使用BitKeeper。该公司CEO Larry McVoy与Linus曾是好友,而BitKeeper在免费使用的许可证中加入很多限制条件,授权Linux社区免费使用这个版本控制系统。
*****
美好的局面在2005年被打破,有人一直反对Linus使用BitKeeper,原因是与Linux开源免费的精神不符。多年来,反对者对BitKeeper的一些功能进行反向工程的举动引起了BitMover的多次注意和警告,在Linux的江湖里大哥众多,其中一位是开发Samba共享的Andrew试图破解BitKeeper,然后被BitMover公司发现了(我快不行了...),于是BitMover公司就收回了Linux的免费使用权...
Linus毫无所动(甚至有些想笑),没去道歉服软、约束兄弟不要搞事情。沉寂了两周,用C语言自己写了一套分布式版本控制系统...也就是我们现在用到的Git。随着2008年Github的上线和开源项目的爆发,Git成为了最快、最简单、最流行的分布式版本控制工具。
>Git创造之初[设定的目标](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E7%AE%80%E5%8F%B2)
* 速度
* 简单的设计
* 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
* 完全分布式
* 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
##### 参考链接
[Git官网](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E7%AE%80%E5%8F%B2)
[版本控制 - 百度百科](https://baike.baidu.com/item/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6)
[廖雪峰官方网站](https://www.liaoxuefeng.com/wiki/896043488029600)
[聚客 - 颜海镜](http://juke.outofmemory.cn/entry/299988)
[CSDN](https://blog.csdn.net/cxs123678/article/details/80226319)
- 版本控制之Git简介
- Git工作流程
- Git工作区、暂存区、版本库
- Git 指令汇总
- Git 忽略文件规则 .gitignore
- pull request
- HTTP简介
- HTTP - Keep-Alive
- HTTP缓存
- XMLHttpRequest
- Fetch
- 跨域
- HTTP 消息头
- TCP/IP
- TCP首部
- IP首部
- IP 协议
- TCP/IP漫画
- 前端开发规范
- 前端开发规范整理
- 前端未来规划
- HTML思维导图
- CSS思维导图
- 布局
- position,float,display的关系和优先级
- line-height、height、font-size
- 移动端适配
- JS 对象
- JS 原型模式 - 创建对象
- JS 预编译
- 探索JS引擎
- ES