今天要介紹的 Git 操做就是 stash,絕不誇張地說,每一個用 Git 的開發人員都必定要會懂怎麼使用。git
在介紹以前,不知道你有沒有和我同樣的經歷:某一天,我正在一個 feature 分支上高高興興地寫着(ba)代(a)碼(ge)。忽然線上環境報錯了,是我負責的部分,此時固然是救火要緊哈,準備停下手中的工做準備切 master 分支 checkout 個 hotfix 分支出來。微信
腦殼正閃出這個想法的時候,咦,發現有點不對勁了 —— 此時個人 feature 分支功能還沒作完,comment 上去沒意義呀!將修改所有刪掉更是不可能,這輩子都是不可能的,那這要怎麼辦呢?app
若是這時能把這個 feature 分支中,還沒寫好的代碼找個地方先藏起來,等到要用的時候再拿出去就完美了。spa
好了,今天要介紹的主角就能實現咱們的需求。咱們來看下 stash 這個功能究竟是怎麼使用的。code
假如我如今的代碼是這樣的:blog
public static void main(String[] args) { System.out.println("我是 feature 分支原有的代碼"); // ... System.out.println("我是正在開發的代碼"); }
接着上面的情景,我須要把正在開發的代碼給藏起來,那麼直接使用 git stash 命令便可,使用後就會變成這樣的效果:教程
public static void main(String[] args) { System.out.println(我是 feature 分支原有的代碼"); // ... }
好了,正在 feature 分支還沒寫完的代碼已經被藏起來了,此時,好奇心滿滿的你想着,它是被藏到哪裏去呢?一頓谷歌以後,你發現能夠經過這個命令查看 git stash list,如圖:圖片
圖中的 stash@(0) 就是被藏起來的記錄了,知道真相的你這下能夠放心地去處理線上問題了。開發
你很牛皮,線上問題沒一會功夫就搞定了,此時你再次切回剛纔的 feature 分支,想要把剛纔藏起來的代碼拿出來。好了,一頓谷歌以後,你發現有兩種拿的方法,分別是:rem
一、git stash pop
二、git stash apply
那這二者有什麼不一樣呢?還記得剛纔提交到 git stash list 命令顯示的結果嗎?—— stash@(0)
git stash pop 的是恢復剛纔被藏起來的代碼,同時刪除 stash@(0) 這條記錄也刪了,此時你再使用 git stash list 命令就沒有結果了:
明白 git stash pop 的做用後,那 git stash apply 命令也很好理解了,它們惟一的不一樣就是 git stash apply 命令不會刪除stash@(0) 這條記錄。
最後,若是你在一個分支上使用了 n 次 git stash 命令,那麼就會有 stash@(0)、stash@(1)、...、stash@(n),對應一共有 n 條記錄。
那咱們要這麼多條記錄有什麼用呢?
答案就是咱們能夠指定 git stash pop/apply 哪條記錄。假如我想要恢復 stash@(1) 記錄。那麼對應的命令是 git stash pop stash@(1) 或 git stash apply stash@(1)
OK,以上就是所有內容了,但願對你有幫助。
PS:前幾天我被極客時間的 Git 教程刷屏。坦白講,Git 的確是一項必備技能。除了極客時間的教程以外,我也很是推薦廖雪峯老師的 Git 教程,連接以下:
https://www.liaoxuefeng.com/w...
PS:本文原創發佈於微信公衆號「不僅Java」,後臺回覆「電子書」,說不定有你想要的經典書籍呢。公衆號專一分享 Java 乾貨、讀書筆記、成長思考。