* 是什么
* 怎么用
* 用在哪些場合
* 有哪些注意點
## 什么是 git
* 是一款開源的分布式版本控制工具。
* 所有的分布式版本控制工具中,git 是最快、最簡單、最流行的工具
## git 的起源
* 作者是 Linux 之父:Linus Benedict Torvalds
* 為了輔助 Linux 內核的開發(管理源代碼)
## git 現狀
國外已經非常普及,國內并未普及
## 其它版本控制工具
* CVS 最早的開源、免費的集中式版本控制恐懼
* SVN使用最多的集中式版本控制工具
* ClearCase
*? VSS 微軟開發的版本控制工具
## 集中版本控制
[image:41059088-B185-4490-81E7-B2DB59015D94-11366-000073DD2FF0685E/集中版本控制工具.png]
所有的代碼在一個地方進行管理
## 分布式版本控制
[image:353310C9-26D8-4832-B305-B358C1787A16-11366-000060E253135606/屏幕快照 2017-02-10 18.51.50.png]
服務端和客戶端都有代碼倉庫。
## git 和 svn 的簡單對比
* 速度 :
很多情況下,git 的 速度遠比 SVN 快
* 結構:
svn 集中式管理,git 分布式管理
* 其它:
svn 使用分支比較笨拙,git 可以輕松擁有無限個分支
svn 使用時必須聯網,git 支持本地版本控制工作
舊版本的 svn 會在每一個文件夾下 放置一個.svn,git 只會在根目錄 擁有一個.git
## git 的工作流程
[image:92CFFCFF-CC34-45D1-AA56-94B727C0629F-11366-000069B4F7E3F383/屏幕快照 2017-02-10 21.33.22.png]
* 先 commit 本地緩存區,在執行 pull,push 操作。
* 分布式和集中式的最大區別在于:在分布式下開發者可以本地提交,每個開發者機器上都有一個服務器的數據庫
## 使用 git
*可以通過命令行指令或者圖形界面客戶端使用 git*
在mac 上,比較好用的 git 圖形界面客戶端有
* SourceTree[SourceTree](http://www.sourcetreeapp.com/download/)
* Github? [Github 客戶端](https://mac.github.com) 不過它是專門為 GitHub 網站設計的
* Xcode 集成的指令比較簡單,不能進行較復雜的操作
### 使用指令:
1)新建一個本地倉庫
$ git init
2)配置倉庫
*一次性配置* (會配置到管理文件的.git 文件夾下)
我是誰
$? git config user.name myname
怎么聯系我
$? git config user.email myemail@email.com
*全局配置* (一勞永逸,放到個人用目錄下)
$ git config —global user.name myname
$ git config —global user.email myemail@email.com
### 如何學習 git 指令
>? git通過使用指南的方式告訴我們某一個指令如何使用
> 這個指令其實是一個不可編輯的 vim
>? q 退出指南
> 按空格下一頁
> control + B 上一頁
> /需要搜索的內容
$ git —help
e.g.: $ git —help clone
### git 常規指令
$ git status 查看文件狀態’
$ git add 添加文件到暫存區
$ git commit 文件名稱 -m 日志信息? *添加文件到”本地倉庫”*
如沒有-m 說明,會自動進入 vim 界面,要求我們輸入修改信息
注意:git 中每次新建或修改之后都要重新 add,svn 只需要 add 一次
文件狀態顏色
> 1、未添加之前的顏色? ——— 紅色 代表在”工作區”
> 2、添加到暫存區之后的顏色 ——— 綠色 代表在”暫存區”
## 工作原理
核心概念:
* 工作區(Working Directory):倉庫文件夾里除.git 目錄以外的內容
* 版本庫(Repository):.git 目錄,用于存儲記錄版本信息.
暫緩區(stage)
分支(master):git 自動創建的第一個分支
HEAD指針:用于指向當前分支
git add 和 git commit 的原理:
* git add:把文件修改添加到暫存區
* git commit : 把暫存區的所有內容提交到當前分支
[image:0B5090F4-4EF3-4739-97DE-2899BBC7231A-11366-000072C56B1EFB8D/屏幕快照 2017-02-11 09.19.35.png]
[image:190BE1D4-A8C0-4BF9-86F4-80455384D65C-11366-000072D514C2E003/屏幕快照 2017-02-11 09.20.20.png]
[image:4C2A9F6D-A258-4CB6-B656-9287F7B88E18-11366-000072DCDAC5CF3E/屏幕快照 2017-02-11 09.21.19.png]