假如現在的Bug你還沒有解決,而上邊又給你派了一個新的Bug,而這個Bug相比較現在正在苦思冥想的Bug比較容易解決。
你想先解決新的Bug,可是之前的Bug還沒有解決完而不能提交。怎么辦?
解決方法:在其他分支上另開爐灶解決。
首先你需要將此刻正在解決Bug的當前分支“儲藏”起來。例假如此時正在你在當前分支dev上已進行了Bug修改但還未提交。
此時你想去解決剛派下來的另一個Bug。而你需要在master分支上去修復這個Bug,第一步就需要先切換到master 分支。當你執行 $ git checkout master 命令的時候,將提示出錯:
error: Your local changes to the following files would be overwritten by checkout:
readme.txt
Please commit your changes or stash them before you switch branches.
(請在切換分支之前提交您的更改或隱藏它們)
因為當前的分支dev 最初也是從master 分支上衍生出來的。而此時你要再從該分支上切換到其主分支。那么你需要先把該dev分支上的改動提交后才能切換,但是該dev分支上還沒有完成全部的修改,你不想提交。那么此時你就要選擇 stash 它們(你在當前分支上改動的卻沒有提交commit的內容)。
所以第二步,在當前分支上執行 $ git stash 命令。將當前分支存起來,id為 8528ea2 s
這時候再執行 $ git status 命令,顯示沒有東西需要提交,這個時候你就可以切換到master分支上了。
接着就可以在主分支master上創建並切換到新的分支去修復另一個Bug了。
那修改完那個Bug也提交后,就該回到dev 分支上去繼續修改那個未完成的Bug。
執行 $ git checkout dev 切換到 dev 分支,這個時候執行 git status 命令仍舊顯示沒有東西需要提交。畢竟我們前邊已經成功將dev上未提交的改動給“隱藏“了,這時,用 $ git stash list 命令去查看我們“存儲”的列表。
會發現id 為 8528ea2 s 的儲藏項目在列表中,我們需要將其恢復,有兩個辦法:
一、用 $ git stash apply 命令恢復,但是恢復后,stash內容並不刪除,這時候再執行 $ git stash list 命令,id 為 8528ea2 s 的儲藏項目還會在列表中,你需要用 $ git stash drop 來刪除;
注意: 如果有一個分支上多個 stash,如果需要恢復指定的 stash ,可以在命令尾部加id,如 $ git stash apply stash@{0},同樣刪除指定 stash 項目則執行如 $ git stash drop stash@{1} 。
二、用 $ git stash pop 命令,恢復的同時把 stash 存儲列表的內容也刪了。這時候再執行 $ git stash list 命令,id 為 8528ea2 s 的儲藏項目不會在列表中。
此時再查看 $ cat <filename> 會發現之前的改動還存在,且執行 git status 就會繼續顯示該分支上有改動未提交。
---------------------
作者:Ashe And Wine
來源:CSDN
原文:https://blog.csdn.net/asheandwine/article/details/79003270
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!