Git-命令行-使用 git stash 暫存代碼


為什么我們需要它
不得不說,在知道這個命令的時,以及之后的使用中,我都超級熱愛這個命令,因為它真的太好用了。

給大家說一下我使用這個命令的場景:

此時我在 feature_666 分支,非常聚精會神加持高專注地實現一個功能 666 模塊,簡直鍵盤如飛的編寫代碼~~~
然后這時,客戶反饋出一個 bug , 非常嚴重,必須立馬解決,優先級為 0 !!!
於是,我需要去到 release 分支去 checkout 新的分支去工作了,但是 666 功能還沒完成怎么辦?
此時我面臨着一個選擇題:
A:提交后切換,代碼保存到分支 feature_666,卻產生一個無意義的提交
B:不提交直接切換,然而這個選項根本沒人會選。

是不是很難選,此時,別忘記還有 C 選項!

C:使用 git stash , 將當前修改(未提交的代碼)存入緩存區,切換分支修改 bug ,回來再通過 git stash pop 取出來。

git stash //將修改存儲到暫存區,工作區會刪除這些修改

git checkout <bug_branch>

查看修改

如果你有丟失代碼的經歷,肯定會對這個之前沒接觸的新命令不放心,那么怎么確定你操作成功了呢?

git stash show //查看剛才暫存的修改

取出修改

現在 bug 改完了,要重新回來開發了,取出修改

git checkout <feture_branch> //切換剛才功能開發的分支

git stash pop //取出修改

修改存儲到什么位置了?

當我們使用 git init給項目添加版本控制的時候,會在項目路徑下生成一個 .git 隱藏文件夾。.git 中存儲着版本管理的所有信息。 
.git/refs/stash 中,存儲的是最后一個 stash 對應的節點指針

同樣,在 .git/log/refs/stash 中可以看到我們全部的 stash 記錄信息

存儲多個 stash 的情況

ok ,我們來嘗試一下修改文件,然后再次使用 git stash ,此時我們有個兩個 暫存修改,那么怎么查看呢?

git stash list //查看暫存區的所有暫存修改記錄

如果在未提交的情況下,執行 git stash 兩次,無法准確分辨兩個stash 具體修改的是哪些內容,這樣用,顯的偉大的 Git 一點都不智能,怎么可以!。

所以,在這種情況下,給 stash 存儲的修改起個名字,顯然非常重要,方式如下:

git stash save <message>

取出也有好幾種方式
上面的演示中,取出 stash 的方式都是

git stash pop //取出最近一次暫存並刪除記錄列表中對應記錄

這是一個非常好用的取出方式,一般使用的頻率最高,但並非適用所有情況。

因為 git stash pop 是彈出棧頂的一個 stash ,也就是最后一次存儲的 stash。在存儲多個stash ,想取出非棧頂的一個的情況下,是不適用的。

這個時候要使用:

git stash list //查看暫存區的所有暫存修改
git stash apply stash@{X} //取出相應的暫存
git stash drop stash@{X} //將記錄列表中取出的對應暫存記錄刪除

結語

雖然,所有的 git 命令都能從 Git文檔 上能查看到,但是總是要自己親自敲過這些命令,這些技能才能自己掌握。

不得不說,使用命令行真的才是使用 git 的正確方式,真的超爽!

 


免責聲明!

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



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