在自己分支改代碼改的正爽,這個時候來了個bug需要切到develop分支,這個時候想切換分支但是當(dāng)前分支改動一大堆,既不想提交自己分支沒改完的代碼,又不能撤銷,就可以使用git stash這個命令,它可以將你現(xiàn)在的工作現(xiàn)場保存在一個棧里,等你去別的分支改完bug回來后,再使用git stash apply命令,就可以恢復(fù)你的工作現(xiàn)場了,回來后所有你修改的代碼仍然是未修改的狀態(tài),這樣可以繼續(xù)你的思路,看看哪些是正在修改的地方而不至于匆忙commit回來后漏掉之前修改的地方了。
用過的人會覺得很簡單,沒用過的人還得在網(wǎng)上搜一圈,感覺也不是很直觀,下面說一下簡單使用:
一.stash

可以看到我現(xiàn)在在自己的test分支,在項(xiàng)目中的某一個文件里加入了一個fuck方法,現(xiàn)在我吃了一個bug,需要切換到develop分支而我又不想提交這個fuck方法,那么我就先stash一下,這里我用的是Sourcetree,命令行也是一樣的。

點(diǎn)擊Sourcetree的stash按鈕。

這里可以輸入一個statsh的message,和commit時的message一樣,方便記錄你的stash信息,下面有個選項(xiàng)keep staged changes暫時沒發(fā)現(xiàn)干啥用的,可勾可不勾。

可以看到stash完以后當(dāng)前分支已經(jīng)看不到任何修改了,這樣我就可以隨便切換到我想去的分支了,假設(shè)我切到develop分支改掉了那個bug,現(xiàn)在又切會test分支,現(xiàn)在我要恢復(fù)剛才我修改fuck方法的那個現(xiàn)場,有兩種方式,1.Sourcetree 2.命令行。
二.恢復(fù)
1.Sourcetree恢復(fù)

最新版Souretree左邊欄最底部就能看到一欄STASHES,這里看到了我之前的在test分支上的stash,直接雙擊

彈框出來問你是否恢復(fù)后要刪除這項(xiàng)stash,刪不刪隨你,這里我就不刪了。
2.命令行恢復(fù)

(1).從Sourcetree打開終端。

(2).輸入git stash apply命令
以上兩種方式結(jié)束后:

是不是很驚喜,你修改的文件和代碼,又回到之前的狀態(tài)了,還是那個熟悉的fuck方法。
三.注意
注意點(diǎn):對于新加入的文件,在stash的時候一定要將它們勾選到staged files(暫存區(qū))中,不然是不會被stash的。

上面的dddd.h、dddd.m和一張蒙層.png都是新加入的文件,這幾個文件沒有被勾選進(jìn)staged files(暫存區(qū))是不會被stash的,應(yīng)該像下面這樣

以上基本就是stash的快速入門了,當(dāng)然他也有高級的用法,目前項(xiàng)目中我覺得會這種最基本的就可以解決我開頭提到的痛點(diǎn)了。
四.總結(jié)
1.點(diǎn)擊Sourcetree上方的stash按鈕,輸入message
2.點(diǎn)擊Sourcetree上方的Ternimal按鈕
3.在Srourcetree左下方切回stash或者在命令行中輸入git stash apply
3步搞定,是不是非常的酷??。