git Stash詳細介紹:git stash和git pop的詳細用法
阿新 • • 發佈:2022-12-06
git Stash詳細介紹:git stash和git pop的詳細用法
一、背景
我們經常會遇到這樣的情況:
在開發過程中,在一個分支開發新的功能,還沒開發完畢,做到一半時有反饋需要處理緊急bug,但是新功能開發了一半又不想提交。
分支有改變時不提交又不能切換分支,如下:
這時就可以使用 git stash ,stash 就是為此而生的!
二、使用
2.1 使用之前,先簡單瞭解下 git stash 幹了什麼:
它會儲存當前工作進度,會把暫存區和工作區的改動儲存到一個未完結變更的堆疊中;執行完這個命令後,在執行 git status
命令,就會發現當前是一個乾淨的工作區,沒有任何改動。
git stash
是本地的,不會上傳到伺服器上;- 可以通過使用
git stash save 'message...'
可以新增一些註釋。
2.2 git stash 相關命令
命令名 | 作用 |
---|---|
git stash | 隱藏當前的工作現場, 此時, git status的結果是 clean |
git stash list | 檢視所有隱藏, 每一行的冒號前面的字串就是標識此隱藏的id |
git stash apply | 重新顯示標識為 id 的隱藏 |
git stash drop | git apply恢復隱藏後, 需要手動刪除 list 列表中的記錄 |
git stash pop | 恢復最新的進度到工作區 |
git stash pop stash@[stash_id] | 恢復指定的進度到工作區 |
2.3 使用流程
一般先使用 git stash list 檢視有沒有已經 stash 的記錄,避免和自己的混淆,到時候使用時不知道是哪條記錄
檢視有無用的 list,可以先使用 git stash drop n 刪除,直到 list 為空
- 執行
git stash
預設是不帶註釋的,想要後面看的更清楚該 stash 是儲存的什麼,可以如下操作:
執行 git stash save "commend"
- 檢視剛才儲存的工作進度
git stash list
儲存註釋的長這樣:
可以看到 stash@{0} 是剛才儲存的
- 這時候在看分支已經是乾淨無修改的(改動都有暫存到 stash)
- 現在就可以正常切換到目標分支,進行相應操作
- 其他分支處理完成,再切回來使用剛才的 stash, 還是先檢視 暫緩列表
- 選擇使用暫緩
git stash apply **n**
這時就看到剛才儲存的工作進度,已經原樣恢復~大功告成!
繼續開發。。。
先來思考一下,為什麼會使用 stash 命令?
在專案開發中,基本都會遇到這樣的情況:本來你在自己的分支上愉快的開發功能A,但是突然加了一個優先順序很高的需求B或者有bug需要先修復掉。但這個時候,你新做的功能A剛開發到一半,總不能先提交A再開發B,或者直接拉個新分支切過去吧?(可以倒是可以,但是不推薦)
git stash在暫存區:存取、刪除
截圖部分(方便檢視)
內容部分(方便複製命令)
暫存區:存取、刪除 | |||
命令 | 說明 | ||
git add.、git stash | 提交到暫存區 | ||
git stash | 暫存工作區修改的內容:儲存到暫存區(可以提N次) | ||
git stash pop | 恢復暫存的工作區內容:從暫存區取出(最近一次) | ||
git stash list | 查詢工作區所有stash的列表 | ||
git stash apply stash@{2} | 查詢後,恢復第二次提交的 | ||
git stash clear | 清空暫存區的所有stash |