一品干貨
1弯蚜、初始化代碼庫(kù)
創(chuàng)建一個(gè)新的代碼庫(kù)(當(dāng)前目錄下)
$ git init
2孔轴、Clone到本地
$ git clone xxxx(url)
3、改動(dòng)文件保存到緩存區(qū)
先add碎捺,此時(shí)沒有commit路鹰,只是在緩存區(qū)
$ git add .
4贷洲、提交本地倉(cāng)庫(kù)
將緩存區(qū)的本次修改命名,并且提交到倉(cāng)庫(kù)區(qū)
$ git commit -m "change message"
5晋柱、提交本地緩存
將暫時(shí)沒有提交到緩存區(qū)的代碼保存到棧上优构,在更新代碼時(shí)候使用,保存本地沒有commit的內(nèi)容
$ git stash
可以把儲(chǔ)藏想象成一種剪貼板雁竞,它會(huì)獲取你工作副本(working copy)中的所有改動(dòng)钦椭,并且保存到一個(gè)新的剪貼板上。然后你就會(huì)得到一個(gè)“干凈”的工作副本碑诉,也就是說一個(gè)不存在任何改動(dòng)的工作目錄彪腔。
之后你隨時(shí)都可以重新調(diào)回那些保存在剪貼板中的改動(dòng)到你的工作副本中來,從而繼續(xù)你之前沒有完成的工作进栽。
你可以建立多個(gè)儲(chǔ)藏單元德挣,不僅僅局限于存儲(chǔ)一組變化。同樣快毛,儲(chǔ)藏也會(huì)不綁定在你所處的當(dāng)前分支或是任何其它分支上格嗅,如果你想要調(diào)回任意一個(gè)儲(chǔ)藏單元,它的改動(dòng)將會(huì)被應(yīng)用在你當(dāng)前的 HEAD 分支上唠帝。
6屯掖、獲取本地緩存列表
獲取在棧上保存的代碼列表
$ git stash list
7、還原緩存內(nèi)容
$ git stash apply stash@{0}
(a) 使用 “git stash pop” 命令没隘,它將調(diào)回最新的一個(gè)儲(chǔ)藏單元懂扼,并且把它從剪貼板中刪除掉。
(b) 使用 “git stash apply <stashname>” 命令右蒲,它將調(diào)回那個(gè)你所給出的儲(chǔ)藏單元阀湿,而這個(gè)儲(chǔ)藏單元還會(huì)保留在剪貼板中。你可以隨時(shí)使用 “git stash drop <stashname>” 來刪除它瑰妄。
儲(chǔ)藏的時(shí)機(jī)
儲(chǔ)藏功能可以幫助我們得到一個(gè)干凈的工作副本陷嘴。當(dāng)然,它還可以應(yīng)用在很多不同的流程中间坐,強(qiáng)烈推薦你在下列情況中儲(chǔ)藏你的本地改動(dòng):
- 在切換到不同分支之前灾挨。
- 在獲取(pulling)遠(yuǎn)程改動(dòng)之前竹宋。
- 在合并(merging)或者衍合(rebasing)一個(gè)分支之前劳澄。
8、恢復(fù)蜈七、撤銷對(duì)文件的修改
$ git checkout '文件名'
9秒拔、查看本地分支
$ git branch
10、查看遠(yuǎn)程分支
$ git branch -r
11飒硅、新建一個(gè)分支
$ git checkout -b 'xxxx'
執(zhí)行后自動(dòng)切換至該分支
12砂缩、切換分支
$ git checkout xxx
13作谚、查看修改過的文件
$ git status
14、查看工作區(qū)和暫存區(qū)的差異
$ git diff
15庵芭、推送分支入遠(yuǎn)程倉(cāng)庫(kù)
$ git push origin 'xxxx'
16妹懒、拉取遠(yuǎn)程分支,合并到當(dāng)前分支
$ git pull origin 'xxxx'
17双吆、合并分支
合并至當(dāng)前分支
$ git merge 'xxxx'
如果遇到?jīng)_突眨唬,無法自動(dòng)合并,修改完沖突部分后伊诵,再次使用add和commit命令進(jìn)行提交单绑。
二品模式 - 簡(jiǎn)單Git-Flow
git-flow是對(duì)git的一個(gè)擴(kuò)展,安裝git-flow后可以使用擴(kuò)展命令曹宴。git-flow把標(biāo)準(zhǔn)git命令用腳本進(jìn)行組合搂橙。團(tuán)隊(duì)采用了簡(jiǎn)單的git-flow模式
git-flow會(huì)預(yù)設(shè)兩個(gè)分支在倉(cāng)庫(kù)
master分支
只能用來包括產(chǎn)品代碼。不要在此分支進(jìn)行開發(fā)笛坦,這是產(chǎn)品的門面分支区转,代表產(chǎn)品最新最穩(wěn)定的版本。不直接提交改動(dòng)到 master 分支上也是很多工作流程的一個(gè)共同的規(guī)則版扩。
dev分支
是你進(jìn)行任何新的開發(fā)的基礎(chǔ)分支废离。這是功能最全,最前衛(wèi)的分支礁芦,所有開發(fā)完成的功能蜻韭,都會(huì)先推送至此分支,待充分測(cè)試和bug修復(fù)后并入master柿扣。
這兩個(gè)分支被稱作為長(zhǎng)期分支它們會(huì)存活在項(xiàng)目的整個(gè)生命周期中肖方。而其他的分支,例如針對(duì)功能的分支未状,針對(duì)發(fā)行的分支俯画,僅僅只是臨時(shí)存在的。它們是根據(jù)需要來創(chuàng)建的司草,當(dāng)它們完成了自己的任務(wù)之后就會(huì)被刪除掉艰垂。
在一般的情況下, “master” 分支可以有效地代表你的產(chǎn)品代碼埋虹。所以猜憎,所有被合并到 “master” 分支的代碼都必須保證質(zhì)量,代碼必須經(jīng)過檢驗(yàn)和確認(rèn)搔课。
這也意味著拉宗,開發(fā)工作不應(yīng)該直接在 “master” 分支上進(jìn)行,這也是一個(gè)最基本的準(zhǔn)則辣辫。因此當(dāng)你使用了 “git checkout master” 命令切換到 “master” 分支后并提交改動(dòng)時(shí)旦事,你就要問問自己,這樣是否符合流程急灭?這些改動(dòng)是否能保證正確姐浮?
其他分支
每當(dāng)開始著手開發(fā)一個(gè)新的功能的或是修復(fù)錯(cuò)誤時(shí),都要對(duì)應(yīng)不同的主題建立一個(gè)新的分支葬馋。這是一種很通用的做法卖鲤,并且也要成為一種習(xí)慣。
新建的主題分支都必須基于 “dev” 分支畴嘶。當(dāng)開發(fā)的功能完成后蛋逾,或者錯(cuò)誤被修復(fù)后,將修改的代碼合并回 “dev” 分支窗悯。
在開發(fā)新功能的同時(shí)区匣,團(tuán)隊(duì)的其他開發(fā)人員很可能已經(jīng)把各自完成的改動(dòng)整合回了 “dev” 分支。在這種情況下蒋院,就需要經(jīng)常性地把那些在 “dev” 分支上的改動(dòng)合并到自己的工作分支上來亏钩。這就確保了自己的工作分支一直處于最新的狀態(tài),并且當(dāng)需要把已完成的改動(dòng)整合回 “dev” 分支上時(shí),可以減少可能出現(xiàn)的沖突和風(fēng)險(xiǎn)欺旧。