【Git学习笔记6】把当前工作现场“储藏”起来:stash操作
明月幾時有,把酒問青天,光吃菜,不加點“酒”怎么行呢。今天來說說在code戰(zhàn)場上“喝醉”后怎么收場的事情,Bug分支以及bug分支的后處理。啥,題目有點懵?🤫,先看到底唄,還懵圈就來后臺撩我,小白無償陪你聊聊這“醉酒”的事情。
一、Bug分支
寫code的呀,bug就像家常便飯一樣。有了bug就需要修復,在Git中,由于分支是如此的強大,所以,每個bug都可以通過一個新的臨時分支來修復,修復后,合并分支,然后將臨時分支刪除。
情景:當你接到一個修復一個代號101的bug的任務時,很自然地,你想創(chuàng)建一個分支issue-101來修復它。但是,等等,當前正在dev上進行的工作還沒有提交。
我們先復現下這種環(huán)境:目前的分支只有master。
新建一個dev分支,做些修改,比如刪除了一個文件。
這個時候我們需要去修復bug,并不是你不想提交,而是工作只進行到一半,還沒法提交,預計完成還需1天時間。但是,必須在兩個小時內修復該bug,怎么辦?Git還提供了一個stash功能,可以把當前工作現場“儲藏”起來,等以后恢復現場后繼續(xù)工作。
第一步:在需要存儲的分支中輸入命令git stash
第二步:切換到master分支
第三步:新建issue-101分支,且修復bug
你想看我修改了什么,你可以用 git diff查看下差別是什么
第四步:在issue-101分支上提交commit,且切換到master分支
第五步:在master分支進行merge(使用—no-ff方式)
第六步:切換到dev分支,git status,工作區(qū)是干凈的。
剛才的工作現場存到哪去了?用git stash list命令看看:
工作現場還在,Git把stash內容存在某個地方了,但是需要恢復一下。
第七步:git stash pop 恢復存儲現場,且刪除這個存儲。
用git stash list 發(fā)現沒有任何存儲了。
第八步:把issue-101 刪除。
注意:還有一個恢復現場的辦法,但是這個就不會自動刪除現場,需要你手動刪除。
命令:
git stash apply stash@{0}?
git stash drop stash@{0}
你可以多次stash,恢復的時候,先用git stash list查看,然后恢復指定的stash,用命令:git stash apply stash@{0}
總結:
修復bug時,我們會通過創(chuàng)建新的bug分支進行修復,然后合并,最后刪除;當手頭工作沒有完成時,先把工作現場git stash一下,然后去修復bug,修復后,再git stash pop,回到工作現場。
二:Bug分支后處理
有個大問題,你發(fā)現了嘛?在master分支上修復了bug后, dev分支是早期從master分支分出來的,所以,這個bug其實在當前dev分支上也存在。
那怎么在dev分支上修復同樣的bug?
方案1:自己在dev分支上重復操作一次,然后提交。麻煩哈!不建議。
方案2:需要把1358040 fix bug 101這個提交所做的修改“復制”到dev分支。注意:我們只想復制1358040 fix bug 101這個提交所做的修改,并不是把整個master分支merge過來。很簡單!很推薦!
方案3:從master 新切一個dev2分支出來,然后在dev2分支上stash。也比較好,與方案2無差啥。
方案3,口頭說一下:
git checkout -b dev2 (在master分支上操作)
git stash pop
git checkout master
git branch -d dev (在master分支操作)
我們來實驗一波方案2:
為了方便操作,Git專門提供了一個cherry-pick命令,讓我們能復制一個特定的提交到當前分支。接著上面bug分支的操作來喲。
第一步:切換到dev分支。
第二步: git cherry-pick <commitId>
注意:commitId怎么查看,還記得嘛?
方法1:git reflog 根據紅框找到箭頭所指,?
方法2:git log –graph
可以理解一下為什么可以這么做?Git自動給dev分支做了一次提交,注意這次提交的commit是637f237,它并不同于master的1358040,因為這兩個commit只是改動相同,但確實是兩個不同的commit。用git cherry-pick,我們就不需要在dev分支上手動再把修bug的過程重復一遍。
目前分支:
總結:在master分支上修復的bug,想要合并到當前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“復制”到當前分支,避免重復勞動。
對了,羞答答的問一句:這個菜+酒系列,還喜歡嗎?請用“在看”來回復我吧。
往期回顧
總結
以上是生活随笔為你收集整理的【Git学习笔记6】把当前工作现场“储藏”起来:stash操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超简单,带你学会多线程爬虫
- 下一篇: 数学大师丘成桐:中国的科技至少要倒退20