stash —— 一個極度實用的Git操作


今天要介紹的 Git 操作就是 stash,毫不誇張地說,每個用 Git 的開發人員都一定要會懂怎么使用。

在介紹之前,不知道你有沒有和我一樣的經歷:某一天,我正在一個 feature 分支上高高興興地寫着(ba)代(a)碼(ge)。突然線上環境報錯了,是我負責的部分,此時當然是救火要緊哈,准備停下手中的工作准備切 master 分支 checkout 個 hotfix 分支出來。

腦袋正閃出這個想法的時候,咦,發現有點不對勁了 —— 此時我的 feature 分支功能還沒做完,comment 上去沒意義呀!將修改全部刪掉更是不可能,這輩子都是不可能的,那這要怎么辦呢?

如果這時能把這個 feature 分支中,還沒寫好的代碼找個地方先藏起來,等到要用的時候再拿出去就完美了。

好了,今天要介紹的主角就能實現我們的需求。我們來看下 stash 這個功能到底是怎么使用的。

假如我現在的代碼是這樣的:

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 分支,想要把剛才藏起來的代碼拿出來。好了,一頓谷歌之后,你發現有兩種拿的方法,分別是:

1、git stash pop

2、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/wiki/0013739516305929606dd18361248578c67b8067c8c017b000


免責聲明!

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



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