Git 修復Bug或者開發新需求(Bug/Feature分支)
【場景一】
程式猿正在分支dev上開發新需求,而產品汪發現線上版本(master)有一個bug(代號1001)。程式猿收到這個代號為1001的bug的任務時,很自然地,想建立一個分支issue-1001來修復它。但是,等等,當前正在dev上進行的工作還沒有提交。並非不想提交,而是工作只進行到一半,還沒法提交。但是,必須在兩個小時內修復該bug,怎麼辦?
修復指定版本bug的四個步驟:
1、儲藏當前分支現場
Git 提供了一個stash功能,可以把當前工作現場“儲藏”起來,等以後恢復現場後繼續工作:
2、切換到主分支、建立並切換到問題分支,修復bug,提交
3、切換到主分支,合併問題分支到主分支
當然,bug修復後,問題分支可以使用命令(git branch -d 分支名字)進行刪除。
4、再次切換到之前的分支,恢復現場,繼續幹活
切換到dev分之後,用 git status 命令檢視,工作區是乾淨的,剛才的工作現場存到哪去了?這時可以用git stash list 命令檢視,工作現場還在,只是需要用命令恢復即可!兩種方式:
一是用 git stash apply 恢復,但是恢復後,stash內容並不刪除,你需要用 git stash drop 來刪除;
另一種方式是用 git stash pop,恢復的同時把stash內容也刪了:
再用 git stash list 檢視,就看不到任何stash內容了
小結一下:
修復bug時,我們會通過建立新的bug分支進行修復,然後合併,最後刪除;
當手頭工作沒有完成時,先把工作現場 git stash 一下,然後去修復bug,修復後,再用 git stash pop,回到工作現場。
【場景二】
程式猿正在dev分支上進行開發,這時候接到新需求(很可能是實驗性的需求)。當然程式猿不希望把現有分支的程式碼打亂,所以,每新增一個新功能,最好新建一個feature分支,在上面開發,完成後,合併,最後,刪除該feature分支。
這時候,切回dev版本,準備合併feature007分支。而此時,產品汪又撤銷的這個需求,開發完的內容必須銷燬。
所以,程式猿必須刪除feature007分支的所有內容,於是使用命令 git branch -d feature007 進行刪除,銷燬失敗。
Git友情提醒:feature007 分支還沒有被合併,如果刪除,將丟失掉修改,如果要強行刪除,需要使用大寫的 -D 引數。
那麼,使用 git branch -D feature007,強行刪除feature007分支。
小結一下:
開發一個新feature,最好新建一個分支;
如果要丟棄一個沒有被合併過的分支,可以通過 git branch -D <name> 強行刪除。
ps:以上內容,根據網上資料並結合自身實踐整理。