更新時(shí)間:2022-06-22 來源:黑馬程序員 瀏覽量:
1、解決思路
在工作過程中,當(dāng)你正在當(dāng)前feature分支上進(jìn)行功能的開發(fā),突然來了一個(gè)bug,要?jiǎng)?chuàng)建一個(gè)bugfix修復(fù)分支進(jìn)行修復(fù)。但是當(dāng)前feature分支你只開發(fā)了一半,顯然你去提當(dāng)前的半成品是不合適的,我們?nèi)绾翁幚泶祟悊栴},來大家看下一圖解:
我們用到的關(guān)鍵命令:
```properties
#創(chuàng)建Stash 工作點(diǎn):
git stash save "干活干到一半"
#查看stash list
git stash list
恢復(fù)方式一:
# apply恢復(fù)后手動(dòng)drop清除stash
$ git stash apply
$ git stash drop
# 多個(gè)stash時(shí),恢復(fù)指定stash需加上id, 如
$ git stash apply stash@{0}
恢復(fù)方式二:
# 恢復(fù)最近一次stash到棧中的內(nèi)容到工作區(qū),恢復(fù)后刪除此stash
git stash pop
# 同理 有多個(gè)存儲(chǔ)時(shí)
git stash pop stash@{0}
```
2、動(dòng)手實(shí)踐
上圖中我們可以看到整個(gè)的處理過程,下面我們來看下具體的操作
2.1、基于Idea工具解決
右擊項(xiàng)目目錄----Git----Reppository----Stash Changes
彈框填上message并勾上keep index方便后面找回,
點(diǎn)擊create stash,此時(shí)你會(huì)發(fā)現(xiàn)會(huì)得到一個(gè)與你master分支內(nèi)容相同的代碼
當(dāng)然你是不能直接在feature分支上修復(fù)bug的,這是你需要切換master分支:
在master主分支基礎(chǔ)上創(chuàng)建bugfix分支進(jìn)行修復(fù)
修復(fù)bug,并提交到bugfix
再切換master分支,然后續(xù)進(jìn)行bugfix分支的合并
把之前在bugfix分支上修復(fù)的代碼合并到當(dāng)前的master分支
bug修復(fù)完成后,切回到feature分支,繼續(xù)工作
找回上一次feature的工作點(diǎn)進(jìn)行工作
彈出框選擇你的工作點(diǎn),然后點(diǎn)擊Apply Stash
2.2、基于Git命令解決
feature分支打代碼開發(fā)到一半,這時(shí)候來了bug需要切換分支修復(fù)
創(chuàng)建Stash 工作點(diǎn):
```properties
#創(chuàng)建Stash 工作點(diǎn):
git stash save "干活干到一半"
```
此時(shí)你再查看App.java代碼會(huì)發(fā)現(xiàn)會(huì)得到一個(gè)與你master分支內(nèi)容相同的代碼
當(dāng)然你是不能直接在feature分支上修復(fù)bug的,你需要切換master分支:
在master主分支基礎(chǔ)上創(chuàng)建bugfix分支進(jìn)行修復(fù)
bugfix代碼后進(jìn)行提交
再切換master分支,然后續(xù)進(jìn)行bugfix分支的合并
合并bugfix代碼到master
bug修復(fù)完成后,切回到feature分支,繼續(xù)工作
找回上一次feature的工作點(diǎn)進(jìn)行工作
```properties
#stash列表查看
git stash list
```
```properties
# apply恢復(fù)后手動(dòng)drop清除stash
$ git stash apply
$ git stash drop
```