Git基本配置
Git配置使用git config分三種再愈,存放在不同位置
文件 | 作用 |
---|---|
/etc/gitconfig | 系統(tǒng)中對(duì)所有的用戶都適用的配置榜苫。git config --system ... |
~/.gitconfig | 用戶目錄下的配置文件只適用該用戶。git config --global ... |
當(dāng)前項(xiàng)目下的.git/config | 配置只對(duì)當(dāng)前項(xiàng)目有效翎冲。git config ... |
首先要配置用戶名和郵箱垂睬。每次git提交都會(huì)使用這里配置的默認(rèn)信息
git config --global user.name "yourname"
git config --global user.email ...@example.com
配置默認(rèn)文本編輯器,例如emacs
git config --global core.editor emacs
配置解決差異沖突時(shí)使用哪種分析工具抗悍,例如vimdiff
git config --global merge.tool vimdiff
檢查已有配置
git config --list
高亮顯示一些配置
git config --global color.status auto #查看狀態(tài)時(shí)高亮
git config --global color.branch auto #分支名高亮
git config --global color.ui auto #自動(dòng)高亮
配置別名來(lái)簡(jiǎn)化一些命令驹饺,例如checkout 簡(jiǎn)化為co,status簡(jiǎn)化為st
git config --global alias.co checkout
git config --global alias.st status
之后使用命令git checkout 時(shí)就可以簡(jiǎn)化為 git co
Git基本命令
環(huán)境配置好了后就可以使用了缴渊,常用的git命令就幾個(gè)不用擔(dān)心
創(chuàng)建git倉(cāng)庫(kù)--git inite
在項(xiàng)目根目錄下執(zhí)行g(shù)it inite命令(在跟目錄下右鍵Git Bash)逻淌,會(huì)在根目錄下創(chuàng)建隱藏.Git目錄,包含相關(guān)配置和信息
查看本地倉(cāng)庫(kù)的狀態(tài)--git status
使用git status或之前簡(jiǎn)化的git st疟暖,狀態(tài)有三種已修改,已暫存田柔,已修改俐巴。已修改是在工作目錄也就是項(xiàng)目里修改還有提交保存;已暫存是指用git add命令提交到要保存的清單(暫存區(qū)域)硬爆;已提交是暫存區(qū)的文件通過(guò)git commit提交到本地git倉(cāng)庫(kù)欣舵;
由于我們新建的倉(cāng)庫(kù),所有文件都沒(méi)保存提交缀磕,都是已修改狀態(tài)
提交修改到暫存區(qū)域--git add
通過(guò)上面提示可以知道用git add提交缘圈,它完整命令參數(shù)復(fù)雜,只說(shuō)最常見(jiàn)的兩種袜蚕。一種是添加某個(gè)文件糟把,例如app文件
git add app
提交目錄下所有文件
git add .
在看看現(xiàn)在狀態(tài)
已變成暫存狀態(tài),并且提示可以使用git rm --cached命令將文件從追蹤列表移除
提交到本地倉(cāng)庫(kù)--git commit
使用git commit將追蹤列表中文件提交
git commit -m "提交說(shuō)明" #形式1:通過(guò)-m提交簡(jiǎn)短信息
git commit #形式2:會(huì)跳轉(zhuǎn)編輯器牲剃,在提交信息有一定格式或文字較多時(shí)用
現(xiàn)在工作區(qū)是干凈的
查看項(xiàng)目歷史記錄--git log
git log
下載遠(yuǎn)程項(xiàng)目--git clone
當(dāng)想下載網(wǎng)絡(luò)上別人的倉(cāng)庫(kù)時(shí)遣疯,可使用git clone "地址",例如下載我github上一個(gè)EmptyHand項(xiàng)目
git clone https://github.com/biloba123/EmptyHand.git
會(huì)在當(dāng)前目錄下新建一個(gè)EmptyHand文件存放
不同分支--git branch
在上面的操作都顯示master凿傅,因?yàn)槟J(rèn)創(chuàng)建一個(gè)master的主分支缠犀,不同分支互不影響,當(dāng)我們開(kāi)發(fā)新功能時(shí)一般會(huì)新建一個(gè)分支在上面操作聪舒,因?yàn)樾录庸δ芸赡軙?huì)有問(wèn)題最后砍掉這個(gè)功能辨液,只有測(cè)試通過(guò)沒(méi)有問(wèn)題再把它合并到master分支上。
例如現(xiàn)在開(kāi)發(fā)熱點(diǎn)功能箱残,新建一個(gè)hotspot分支
git branch hotspot
看到現(xiàn)在一共兩個(gè)分支滔迈,當(dāng)前處于master
切換分支--git checkout
checkout命令用于簽出一個(gè)分支或者一個(gè)路徑。常用于分支切換和恢復(fù)文件。列入切換到hotspot分支
git checkout hotspot
現(xiàn)在已經(jīng)在hotspot分支亡鼠,我們開(kāi)發(fā)啊開(kāi)發(fā)(幾天過(guò)去了...)赏殃,功能差不多實(shí)現(xiàn)了將代碼保存提交
然而,hotspot出現(xiàn)嚴(yán)重bug间涵,只放棄它
git checkout master #切換回master
git branch -D hotspot #刪除hotspot分支
checkout的另一個(gè)常用功能是將文件恢復(fù)到修改之前狀態(tài)仁热。比如今天去在ConnectHotspotFragment.java文件里加了好多好多代碼,然而寫(xiě)完發(fā)現(xiàn)完全不能用...勾哩,而且由于太亂之前代碼也不能用了抗蠢。。思劳。
別擔(dān)心通過(guò)下面命令可以恢復(fù)
git checkout -- ConnectHotspotFragment.java
合并分支--git merge
如果hotspot開(kāi)發(fā)完成沒(méi)bug迅矛,要將它合并到master分支上。首先提交hotspot代碼潜叛,切換到主分支秽褒,再執(zhí)行g(shù)it merge hotspot命令,如果沒(méi)沖突就能直接合并
解決沖突
合并并不能經(jīng)常一帆風(fēng)順威兜,比如我現(xiàn)在主要負(fù)責(zé)這個(gè)項(xiàng)目销斟,然后有另一個(gè)人協(xié)助我,我就把hotspot丟給他做椒舵,我也繼續(xù)在主分支上做蚂踊,但如果我們同時(shí)改了MainActivity,那在合并時(shí)
看到代碼里
兩個(gè)分支同時(shí)改了這里笔宿,所以git不知道該用誰(shuí)的犁钟,這時(shí)就要手動(dòng)合并
然后再git add和commit提交代碼即可
為版本打個(gè)標(biāo)簽--git tag
當(dāng)完成所有功能并通過(guò)測(cè)試時(shí),通常會(huì)為這個(gè)版本打個(gè)標(biāo)簽
git tag -a v1.0 -m "相關(guān)信息"
也可以通過(guò)" git tag -d 標(biāo)簽名 "來(lái)刪除tag泼橘,通過(guò)" git show 標(biāo)簽名"查看版本具體信息
幫助文檔--git help
當(dāng)你不知道某個(gè)命令怎么用時(shí)涝动,可以通過(guò) git help 來(lái)獲取其完整說(shuō)明。例如查看tag命令說(shuō)明
git help tag