前瞻
當(dāng)使用一個(gè)分支(如:feature/new-design)進(jìn)行正常開發(fā)時(shí),但是源代碼出現(xiàn)一個(gè)緊急bug需要及時(shí)處理,但是此分支還沒完成,又需要使用master分支進(jìn)行bug處理,所以我們需要用到了git stash
命令
git stash #保存當(dāng)前進(jìn)度
git stash save "message" #保存當(dāng)前修改狀態(tài),加上注釋信息
git stash list #列出所有的曾經(jīng)的stash
git stash pop #恢復(fù)最新的進(jìn)度到工作區(qū)。git默認(rèn)會(huì)把工作區(qū)和暫存區(qū)的改動(dòng)都恢復(fù)到工作區(qū)。會(huì)刪除當(dāng)前進(jìn)度!!!
git stash pop --index #恢復(fù)最新的進(jìn)度到工作區(qū)和暫存區(qū)。(嘗試將原來暫存區(qū)的改動(dòng)還恢復(fù)到暫存區(qū))
git stash pop stash@{1} #恢復(fù)指定的進(jìn)度到工作區(qū)。stash_id是通過git stash list命令得到的
git stash apply <stash_id> #恢復(fù)指定的進(jìn)度到工作區(qū)。和git stash pop一樣只是不刪除恢復(fù)的進(jìn)度
git stash clear #刪除所有存儲(chǔ)的進(jìn)度
本例使用laravel項(xiàng)目為例
- 模擬環(huán)境
在laravel項(xiàng)目文件中打開一個(gè)終端(我目前用的是windows,要是linux,cd進(jìn)入該項(xiàng)目文件夾),切換一個(gè)分支feature/new-design,運(yùn)行php artisan make:controller ReportsController
生成一個(gè)Reports控制器,然后在route.php文件中添加一個(gè)路由(隨便寫如:Route::resource('reports', 'ReportsController');
),此時(shí)我發(fā)現(xiàn)項(xiàng)目有個(gè)錯(cuò)誤需要更改 - 先
git stash
將feature/new-design分支編寫的內(nèi)容拿出來,然后git checkout master
切換到master分支,此時(shí)git status
將會(huì)沒有內(nèi)容提交。 - 在master分支更改好bug,然后提交之后,切換到feature/new-design分支
-
git stash list
查看stash記錄,運(yùn)行git stash apply
(可以是git stash apply [stash id(stash@{0})]
)回到某個(gè)原點(diǎn),此時(shí)再次git status
看到的就是之前git stash
前的內(nèi)容 -
在此分支編輯完之后提交合并即可完成,達(dá)到目的,下面是我的簡單流程