Git原理
每個(gè)項(xiàng)目都有一個(gè) Git 目錄枉昏,它是 Git 用來(lái)保存元數(shù)據(jù)和對(duì)象數(shù)據(jù)庫(kù)的地方。該目錄非常重要闻书,每次克隆鏡像倉(cāng)庫(kù)的時(shí)候,實(shí)際拷貝的就是這個(gè)目錄里面的數(shù)據(jù)脑慧。? 從項(xiàng)目中取出某個(gè)版本的所有文件和目錄魄眉,用以開始后續(xù)工作的叫做工作目錄,這些文件實(shí)際上都是從 Git 目錄中的壓縮對(duì)象數(shù)據(jù)庫(kù)中提取出來(lái)的闷袒,接下來(lái)就可以在工作目錄中對(duì)這些文件進(jìn)行編輯坑律。? 所謂的暫存區(qū)域只不過(guò)是個(gè)簡(jiǎn)單的文件,一般都放在 Git 目錄中霜运。有時(shí)候人們會(huì)把這個(gè)文件叫做索引文件脾歇,不過(guò)標(biāo)準(zhǔn)說(shuō)法還是叫暫存區(qū)域。
對(duì)于任何一個(gè)文件淘捡,在 Git 內(nèi)都只有三種狀態(tài):
????1.已提交(committed)
????2.已修改(modified)
????3.已暫存(staged)
已提交表示該文件已經(jīng)被安全地保存在本地?cái)?shù)據(jù)庫(kù)中了藕各;已修改表示修改了某個(gè)文件,但還沒(méi)有提交保存焦除;已暫存表示把已修改的文件放在下次提交時(shí)要保存的清單中激况。 所以Git 管理項(xiàng)目時(shí),文件流轉(zhuǎn)分為三個(gè)工作區(qū)域:
????1.Git 的工作目錄
????2.暫存區(qū)域
????3.以及本地倉(cāng)庫(kù)。
首先安裝 Git
在你開始使用 Git 前乌逐,需要將它安裝在你的計(jì)算機(jī)上竭讳。 即便已經(jīng)安裝,最好將它升級(jí)到最新的版本浙踢。 你可以通過(guò)軟件包或者其它安裝程序來(lái)安裝绢慢,或者下載源碼編譯安裝。下載完打開安裝包直接傻瓜式下一步即可洛波。
Window安裝
? http://git-scm.com/download/win?下載Git客戶端軟件胰舆,和普通軟件? ? 安裝方式一樣。
? Linu安裝
? CentOS發(fā)行版:sudo yum install git
? Ubuntu發(fā)行版:sudo apt-get install git
? Mac安裝
? 打開Terminal直接輸入git命令蹬挤,會(huì)自動(dòng)提示缚窿,按提示引導(dǎo)安裝即可
一、配置自己的GitHub賬號(hào)
git config --global user.name "自已的名字"
git config --global user.email "自已的郵箱地址"
二焰扳、項(xiàng)目初始化
git init 項(xiàng)目初始化
git status 查詢狀態(tài)
git add file * 或 -A 添加文件到暫存區(qū)
git reset --hard sha值?恢復(fù)到上一次的提交
git clone (項(xiàng)目地址) 將遠(yuǎn)程倉(cāng)庫(kù)克隆到本地
三倦零、 項(xiàng)目本地代碼上傳到遠(yuǎn)程倉(cāng)庫(kù)
git add . 項(xiàng)目添加到暫存區(qū)
git commit -m "" 項(xiàng)目提交的注釋
git remote add origin + (git路徑) 項(xiàng)目遠(yuǎn)程庫(kù)地址
git pull --rebase origin master 項(xiàng)目本地和遠(yuǎn)程同步合并
git push -u origin master 項(xiàng)目推送到遠(yuǎn)程倉(cāng)庫(kù)
四、 項(xiàng)目分支管理
git branch 查看分支
git branch -a 查看所有的分支 綠色*為選中狀態(tài)
git checkout (分支名字) 切換分支
git checkout -b (分支名字) 創(chuàng)建分支 -b表示創(chuàng)建并切換
git checkout - 切換到上一個(gè)分支
git merge (分支名字) 合并某分支到當(dāng)前分支
git branch -d (分支名字) 刪除分支
五吨悍、 撤回修改
git reset --hard 回到節(jié)點(diǎn)的commit時(shí)的狀態(tài)
git reset --soft 只重置本地倉(cāng)庫(kù)文件 工作區(qū)文件不變
git checkout file 文件撤銷其修改
git checkout . 本地所有修改的扫茅,沒(méi)有的提交的,都返回到原來(lái)的狀態(tài)
git checkout -- 若繼續(xù)該命令畜份,則會(huì)刪除掉剛剛的修改內(nèi)容
六诞帐、共享倉(cāng)庫(kù)
mkdir repo.git 創(chuàng)建以.git結(jié)尾目錄
cd repo.git 進(jìn)入這個(gè)目錄
git init --bare 初始化一個(gè)共享倉(cāng)庫(kù),注意選項(xiàng)--bare
這樣我們就建好了一個(gè)共享的倉(cāng)庫(kù)爆雹,但這時(shí)這個(gè)倉(cāng)庫(kù)是一個(gè)空的倉(cāng)庫(kù)停蕉。 以上是我們直接創(chuàng)建裸倉(cāng)庫(kù)的步驟,除了上面的方法外钙态,我們還可以通git clone --bare 倉(cāng)庫(kù)地址的形式慧起,將已有一個(gè)倉(cāng)庫(kù)導(dǎo)出成裸倉(cāng)庫(kù)向共享倉(cāng)庫(kù)共享內(nèi)容 通過(guò): git push 倉(cāng)庫(kù)地址 從共享倉(cāng)庫(kù)里取出內(nèi)容 git clone ./repo.git demo git pull ../repo.git master?
七、git提交的格式
1.提交類型說(shuō)明 :
feat :新功能
fix :修復(fù)bug?
doc : 文檔改變
style : 代碼格式改變
refactor :某個(gè)已有功能重構(gòu)
perf :性能優(yōu)化
test :增加測(cè)試
build :改變了build工具 如 grunt換成了npm
revert: 撤銷上一次的commit
scope :用來(lái)說(shuō)明此次修改的影響范圍 可以隨便填寫任何東西 commitizen也給出了幾個(gè) 如:location 册倒、browser蚓挤、compile不過(guò)我推薦使用
all :表示影響面大 ,如修改了網(wǎng)絡(luò)框架? 會(huì)對(duì)真?zhèn)€程序產(chǎn)生影響
loation: 表示影響小驻子,某個(gè)小小的功能
module:表示會(huì)影響某個(gè)模塊 如登錄模塊灿意、首頁(yè)模塊 、用戶管理模塊等等
subject: 用來(lái)簡(jiǎn)要描述本次改動(dòng)崇呵,概述就好了
body:具體的修改信息 應(yīng)該盡量詳細(xì)
footer:放置寫備注啥的缤剧,如果是 bug ,可以把bug id放入