1、術(shù)語
倉庫(Repository)
一個(gè)倉庫包括了所有的版本信息、所有的分支和標(biāo)記信息。在Git中倉庫的每份拷貝都是完整的。倉庫讓你可以從中取得你的工作副本。
分支(Branches)
一個(gè)分支意味著一個(gè)獨(dú)立的、擁有自己歷史信息的代碼線(code line)。你可以從已有的代碼中生成一個(gè)新的分支,這個(gè)分支與剩余的分支完全獨(dú)立。默認(rèn)的分支往往是叫master。用戶可以選擇一個(gè)分支,選擇一個(gè)分支叫做checkout.
標(biāo)記(Tags)
一個(gè)標(biāo)記指的是某個(gè)分支某個(gè)特定時(shí)間點(diǎn)的狀態(tài)。通過標(biāo)記,可以很方便的切換到標(biāo)記時(shí)的狀態(tài),例如2009年1月25號(hào)在testing分支上的代碼狀態(tài)
提交(Commit)
提交代碼后,倉庫會(huì)創(chuàng)建一個(gè)新的版本。這個(gè)版本可以在后續(xù)被重新獲得。每次提交都包括作者和提交者,作者和提交者可以是不同的人
URL
URL用來標(biāo)識(shí)一個(gè)倉庫的位置
修訂(Revision)
用來表示代碼的一個(gè)版本狀態(tài)。Git通過用SHA1 hash算法表示的id來標(biāo)識(shí)不同的版本。每一個(gè) SHA1 id都是160位長,16進(jìn)制標(biāo)識(shí)的字符串。最新的版本可以通過HEAD來獲取,之前的版本可以通過"HEAD~1"來獲取,以此類推。
2、常用命令
一般來說,日常使用只要記住下圖6個(gè)命令,就可以了。但是熟練使用,恐怕要記住60~100個(gè)命令。

- Workspace:工作區(qū)
- Index / Stage:暫存區(qū)
- Repository:倉庫區(qū)(或本地倉庫)
- Remote:遠(yuǎn)程倉庫
3、配置
Git的配置文件為.gitconfig,它可以在用戶主目錄下(全局配置),也可以在項(xiàng)目目錄下(項(xiàng)目配置)。
- 顯示當(dāng)前的Git配置
$ git config --list
- 編輯Git配置文件
git config -e [--global] - 設(shè)置提交代碼時(shí)的用戶信息
git config [--global] user.name "[name]" git config [--global] user.email "[email address]"
4、新建代碼庫
- 在當(dāng)前目錄新建一個(gè)Git代碼庫
git init
- 新建一個(gè)目錄,將其初始化為Git代碼庫
git init [project-name]
5、增加/刪除文件
- 添加指定文件到暫存區(qū)
git add [file1] [file2] ... - 添加指定目錄到暫存區(qū),包括子目錄
git add [dir] - 添加當(dāng)前目錄的所有文件到暫存區(qū)
git add . - 添加每個(gè)變化前,都會(huì)要求確認(rèn), 對(duì)于同一個(gè)文件的多處變化,可以實(shí)現(xiàn)分次提交
git add -p - 刪除工作區(qū)文件,并且將這次刪除放入暫存區(qū)
git rm [file1] [file2] ... - 停止追蹤指定文件,但該文件會(huì)保留在工作區(qū)
git rm --cached [file] - 改名文件,并且將這個(gè)改名放入暫存區(qū)
git mv [file-original] [file-renamed]
5、代碼提交

- 提交暫存區(qū)到倉庫區(qū)$ git commit -m [message]
- 提交暫存區(qū)的指定文件到倉庫區(qū)$ git commit [file1] [file2] ... -m [message]
- 提交工作區(qū)自上次commit之后的變化,直接到倉庫區(qū)$ git commit -a
- 提交時(shí)顯示所有diff信息$ git commit -v
- 使用一次新的commit,替代上一次提交,如果代碼沒有任何新變化,則用來改寫上一次commit的提交信息$ git commit --amend -m [message]
- 重做上一次commit,并包括指定文件的新變化$ git commit --amend [file1] [file2] ...
6、分支
幾乎每一種版本控制系統(tǒng)都以某種形式支持分支。使用分支意味著你可以從開發(fā)主線上分離開來,然后在不影響主線的同時(shí)繼續(xù)工作。在很多版本控制系統(tǒng)中,這是個(gè)昂貴的過程,常常需要?jiǎng)?chuàng)建一個(gè)源代碼目錄的完整副本,對(duì)大型項(xiàng)目來說會(huì)花費(fèi)很長時(shí)間。
有人把 Git 的分支模型稱為“必殺技特性”,而正是因?yàn)樗?,?Git 從版本控制系統(tǒng)家族里區(qū)分出來。Git 有何特別之處呢?Git 的分支可謂是難以置信的輕量級(jí),它的新建操作幾乎可以在瞬間完成,并且在不同分支間切換起來也差不多一樣快。和許多其他版本控制系統(tǒng)不同,Git 鼓勵(lì)在工作流程中頻繁使用分支與合并,哪怕一天之內(nèi)進(jìn)行許多次都沒有關(guān)系。理解分支的概念并熟練運(yùn)用后,你才會(huì)意識(shí)到為什么 Git 是一個(gè)如此強(qiáng)大而獨(dú)特的工具,并從此真正改變你的開發(fā)方式。
- 創(chuàng)建分支并且切換過去(dev)
git checkout -b dev - 查看所有分支(當(dāng)前分支前面會(huì)標(biāo)一個(gè)*號(hào))
git branch - 切換回master分支
git checkout master - 合并指定分支到當(dāng)前分支
git merge dev - 刪除分支
git branch -d dev



