首頁 >開發工具 >Git >「git stash」暫存的操作詳解

「git stash」暫存的操作詳解

Guanhui
Guanhui轉載
2020-07-23 18:01:274809瀏覽

「git stash」暫存的操作詳解

為什麼我們需要它

#不得不說,在知道這個指令的時,以及之後的使用中,我都超級熱愛這個指令,因為它真的太好用了。

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

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

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

C:使用 git stash , 將目前修改(未提交的程式碼)存入快取區,切換分支修改 bug ,回來再透過 git stash pop 取出。

1. 暫存操作

#查看当前状态
git status 
#如果有修改,添加修改文件
git add .
#暂存操作
git stash save '本次暂存的标识名字'

2. 查看目前暫存的記錄

#查看记录
git stash list

修改儲存到什麼位置了?

當我們使用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>

3. 恢復暫存的工作

'pop指令恢復,恢復後,暫存區域會刪除目前的記錄'

#恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash pop stash@{index}

'apply指令恢復,恢復後,暫存區域會保留目前的記錄'

#恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash apply stash@{index}

4. 刪除暫存

#删除某个暂存, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash drop stash@{index}
#删除全部暂存
git stash clear

推薦教學:《Git教學

以上是「git stash」暫存的操作詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除