當咱們拿到一個新的bug或者feature(功能)時,首先應該想到通過分支來完成咱們的任務。因為在軟件開發中,總是會根據客戶的需求不斷的添加新的feature進來,同時在做移動開發過程中bug也可以說是“常客”。通過前幾章的內容,相信咱們很自然會想到創建一個新的branch(分支),在此分支上來修復bug或者實現feature,完成后,然后再merge(合并)到咱們的主分支上。
當咱們接到一個比如說是關于空指針的bug,而咱們手中的活(在b1分支上的bug)還沒提交,預計要半天的時間,但新的bug必須在1小時內修完。這時咱們就要用到“儲存現場”的功能git stash,這樣咱們可以在修護新的bug之后再恢復現場來繼續原先還沒有提交的操作。下面咱們先修改之前的hellogit.txt文件的,修改內容為:
~~~
Hello Git
Git is so easy.
~~~
然后咱們仍然使用git status來觀察一個該文本的狀態:

可以看到紅色部分提示,該文件已經被修改,同時該文件的狀態仍處于工作區中,這是咱們接到一個新的bug,上級要求必須盡快修復,這時咱們先“保存現場”:

用git status查看工作區,就是干凈的,除非有沒有被Git管理的文件:

因此咱可以放心地創建分支來修復bug,現在假定咱們使用主分支(master)來修復咱們的這個新的bug,就從主分支上創建一個臨時分支b2:

現在修復1.txt中的bug:

bug修好了,下面提交:

切換到主分支上在merge(合并):

然后刪除臨時分支b2:

好了,新的bug已經修復完,下面就可以繼續回到咱們原來的分支(b1)上繼續工作了:

咱們可以看到,工作區是干凈的,之前咱們“儲存的現場”哪去了呢?咱可以用git stash list來查看:

存儲的工作現場還在,Git把stash內容存在某個地方了,但是需要恢復一下,有兩個辦法:
方法一:先用git stash apply來恢復現場,然后再用git stash drop來刪除stash內容;
方法二:直接使用git statch pop來恢復并刪除stash內容。
咱們為了方便,就直接用git stash pop了:

可以看到b1分支上hellogit.txt的狀態又回來了,咱又可以繼續在b1分支上干活了
。
**總結**:(1)存儲現場:git stash
? ? ? ? ? (2)查看工作現場:git stach list
? ? ? ? ? (3)恢復現場有兩種:1,使用git stash apply 來恢復,然后再使用git stash drop來刪除stash的內容。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.使用git stash pop,來恢復并刪除stash內容。
? ? ? ? ? (4)如果要多次使用stash,恢復的時候先用git stash list查看,然后在指定你要恢復的內容:git stash apply?stash@{0}。
? ? ? ? ?( 5) 如果要丟棄一個沒有合并的分支,可以使用git branch -D branch-name。