# 6.1 Git
## 6.1 Git
Git一般被用作一種版本控制系統(Version Control System),由Linux的發明人Linus Torvalds發明。作為一種版本控制系統,Git有倉庫(Repository)、版本(Revision)和提交(Commit)的概念,以及查看版本歷史(history)、版本之間的差異(diff)、以及創建/合并分支(branch)等基本功能。但是它跟CVS和SVN這樣的版本控制系統相比有以下幾點顯著不同:
- 它是一種分布式的管理系統,而非client-server系統。這意味著它不像CVS或者SVN那樣把歷史紀錄放在一個中心的服務器上,而是分布在各處,包括最終用戶的本地機器上——每一處都有完整的歷史紀錄。這使得它不依賴中心服務器就可以工作。
- 它具有輕便的“分支-合并”功能,并且它鼓勵積極地使用這一功能來進行開發:每一個新的功能或者BUG修復都可以/應該在一個新的分支上進行,完成之后再merge回主干上。
這些不同之處是由于Git與眾不同的設計:實際上Git應該被看做是一種帶有版本管理功能的文件系統[1](#fn_1)。只有深入理解了這一點(將在[Git基本原理](internals.html)一節詳細介紹),才能真正理解Git。
本章將首先介紹Git作為一種版本控制系統的基本操作,然后介紹Git背后的原理,最后給出進一步學習的指南。
> 1. "In many ways you can just see git as a filesystem – it's content-addressable, and it has a notion of versioning, but I really really designed it coming at the problem from the viewpoint of a filesystem person (hey, kernels is what I do), and I actually have absolutely zero interest in creating a traditional SCM system." - Linus. 參見:[https://en.wikipedia.org/wiki/Git\_%28software%29#Data\_structures](https://en.wikipedia.org/wiki/Git_%28software%29#Data_structures)[?](#reffn_1 "Jump back to footnote [1] in the text.")
- 前言
- 1 Web概述
- 1.1 什么是Web
- 1.2 超文本和超鏈接
- 1.3 URL
- 1.4 DNS
- 1.5 HTTP
- 1.5.1 客戶端請求
- 1.5.2 服務器應答
- 1.5.3 進一步了解HTTP
- 1.6 HTTPS
- 2 Web瀏覽器
- 2.1 HTML
- 2.1.1 文檔類型聲明
- 2.1.2 標簽和屬性
- 2.1.3 文檔結構
- 2.1.4 DOM
- 2.1.5 進一步了解HTML
- 2.2 CSS
- 2.2.1 樣式與樣式表
- 2.2.2 樣式表語法
- 2.2.3 級聯樣式表
- 2.2.4 進一步了解CSS
- 2.3 JavaScript
- 2.3.1 script標簽
- 2.3.2 操縱DOM
- 2.3.3 jQuery
- 2.3.4 進一步了解JavaScript
- 2.4 Ajax
- 2.5 移動設備與響應式Web設計
- 3 Web服務器
- 3.1 方法與資源
- 3.2 狀態代碼
- 3.3 靜態內容與動態內容
- 3.4 編程語言與技術
- 3.4.1 CGI
- 3.4.2 PHP
- 3.4.3 Java
- 3.4.4 Python
- 3.4.5 Ruby
- 3.4.6 Node.js
- 3.5 RESTful Web API
- 3.6 服務器架構
- 3.7 Web緩存
- 3.8 服務器推送
- 4 數據庫
- 4.1 關系型數據庫
- 4.2 NoSQL數據庫
- 5 Web服務器的其他組件
- 5.1 Cron
- 5.2 消息隊列
- 5.3 郵件服務器
- 6 開發工具與技術
- 6.1 Git
- 6.1.1 Git基礎操作
- 6.1.2 Git基本原理
- 6.1.3 進一步了解Git
- 6.2 敏捷開發