解決Git切換分支問題:Please commit your changes or stash them before you switch branches.
專案場景:
現在的Bug你還沒有解決,而上邊又給你派了一個新的Bug,而這個Bug相比較現在正在苦思冥想的Bug比較容易解決。
你想先解決新的Bug,可是之前的Bug還沒有解決完而不能提交。怎麼辦?
問題描述:
當我們正常使用Git切換分支時,會出現以下提示(請在切換分支之前提交您的更改或隱藏它們)
Please commit your changes or stash them before you switch branches.
解決方案:
1. 因為當前的分支dev 最初也是從master 分支上衍生出來的。而此時你要再從該分支上切換到其主分支。那麼你需要先把該dev分支上的改動提交後才能切換,但是該dev分支上還沒有完成全部的修改,你不想提交。那麼此時你就要選擇 stash (存放)它們(你在當前分支上改動的卻沒有提交commit的內容)。git stash
命令。將當前分支存起來,id為 807be186826
2. 這時候再執行 git status
命令,顯示沒有東西需要提交,接著就可以在主分支master上建立並切換到新的分支去修復另一個Bug了。
3. 那修改完那個Bug也提交後,就該回到dev 分支上去繼續修改那個未完成的Bug。
執行 git checkout dev
切換到 dev 分支,這個時候執行 git status 命令仍舊顯示沒有東西需要提交。畢竟我們前邊已經成功將dev上未提交的改動給“隱藏“了,這時,用 $ git stash list
命令去檢視我們“儲存”的列表。
會發現id 為 807be186826 的儲藏專案在列表中,我們需要將其恢復,有兩個辦法:
一、用
git stash apply
命令恢復,但是恢復後,stash內容並不刪除,這時候再執行 $ git stash list 命令,id 為 807be186826 的儲藏專案還會在列表中,你需要用git stash drop
來刪除;
注意:
如果有一個分支上多個 stash,如果需要恢復指定的 stash ,可以在命令尾部加id,如 $ git stash apply [email protected]{0},同樣刪除指定 stash 專案則執行如 $ git stash drop[email protected]{1} 。
二、用
git stash pop
命令,恢復的同時把 stash 儲存列表的內容也刪了。這時候再執行git stash list
命令,id 為 807be186826 的儲藏專案不會在列表中。
此時再檢視 會發現之前的改動還存在,且執行 git status 就會繼續顯示該分支上有改動未提交。