Git如何在不提交當前分支的情況下切換到其它分支進行操作——git stash


假如現在的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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM