### 版本控制系統
> [版本控制](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