在開發(fā)中,會經(jīng)常碰到bug
問題羽莺,那么有了bug
就需要修復(fù)洞豁,在Git中,分支是很強(qiáng)大的族跛,每個bug
都可以通過一個臨時分支來修復(fù),修復(fù)完成后长酗,合并分支桐绒,然后將臨時的分支刪除掉之拨。
當(dāng)你接到一個修復(fù)一個代號101
的bug的任務(wù)時咧叭,很自然地,你想創(chuàng)建一個分支issue-101
來修復(fù)它吉挣,但是,當(dāng)前的dev
分支上的工作還沒有提交睬魂。比如如下:
并不是我不想提交镀赌,而是工作進(jìn)行到一半時候,我們還無法提交喉钢,比如我這個分支bug要2天完成良姆,但是我issue-101
bug需要5個小時內(nèi)完成。怎么辦呢歇盼?還好,Git還提供了一個stash
功能伯复,可以把當(dāng)前工作現(xiàn)場 ”隱藏起來”邢笙,等以后恢復(fù)現(xiàn)場后繼續(xù)工作。如下:
所以現(xiàn)在我可以通過創(chuàng)建issue-101
分支來修復(fù)bug了叮雳。
首先確定要在哪個分支上修復(fù)bug妇汗,假定需要在master
分支上修復(fù),就從master
創(chuàng)建臨時分支:
修復(fù)完成后寞焙,切換到master
分支上,并完成合并捣郊,最后刪除issue101
分支。演示如下:
現(xiàn)在刮萌,我們回到dev
分支上干活了娘扩。
工作區(qū)是干凈的畜侦,那么我們工作現(xiàn)場去哪里呢躯保?我們可以使用命令 git stash list
來查看下。如下:
工作現(xiàn)場還在途事,Git把stash內(nèi)容存在某個地方了,但是需要恢復(fù)一下义图,有兩個辦法:
一是用git stash apply
恢復(fù)召烂,但是恢復(fù)后,stash
內(nèi)容并不刪除奏夫,你需要用git stash drop
來刪除;
另一種方式是用git stash pop
廊谓,恢復(fù)的同時把stash
內(nèi)容也刪了:
Feature分支
軟件開發(fā)中蒸痹,總有無窮無盡的新的功能要不斷添加進(jìn)來呛哟。
添加一個新功能時,你肯定不希望因為一些實驗性質(zhì)的代碼扫责,把主分支搞亂了,所以借帘,每添加一個新功能,最好新建一個feature
分支肺然,在上面開發(fā),完成后拾碌,合并街望,最后,刪除該feature
分支灾前。
現(xiàn)在,你終于接到了一個新任務(wù):開發(fā)代號為Vulcan的新功能蔫敲。
切回dev
炭玫,準(zhǔn)備合并:
一切順利的話,feature分支
和bug分支
是類似的吞加,合并,然后刪除伯诬。
但是巫财,就在此時,接到上級命令平项,因經(jīng)費不足,新功能必須取消接癌!
雖然白干了扣讼,但是這個分支還是必須就地銷毀:
分支還沒有被合并,直接刪除是會有個提示的荔燎,要用-D
這個參數(shù)來刪。
小結(jié)
修復(fù)bug
時有咨,我們會通過創(chuàng)建新的bug
分支進(jìn)行修復(fù),然后合并婉商,最后刪除渣叛;
當(dāng)手頭工作沒有完成時,先把工作現(xiàn)場git stash
一下淳衙,然后去修復(fù)bug
,修復(fù)后筷狼,再git stash pop
匠童,回到工作現(xiàn)場塑顺。
開發(fā)一個新feature
,最好新建一個分支严拒;
如果要丟棄一個沒有被合并過的分支,可以通過git branch -D <name>
強(qiáng)行刪除挤牛。