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