[TOC] #### 1. 應(yīng)用場(chǎng)景 --- git stash 命令用于將工作區(qū)中的更改和暫存區(qū)中的內(nèi)容儲(chǔ)存起來 日常開發(fā)中,會(huì)經(jīng)常遇到這種場(chǎng)景 我們正在 dev 分支開發(fā)新功能,做到一半時(shí),產(chǎn)品經(jīng)理過來和我們反饋了一個(gè)緊急 bug,需要馬上解決,但是做了一半的新功能又不想提交到版本庫。這時(shí)可以使用 `git stash push` 先將當(dāng)前進(jìn)度保存起來,然后去修復(fù) bug,修復(fù)完后使用 `git stash apply` 恢復(fù)之前保存的進(jìn)度即可 場(chǎng)景1、需要切換到另一個(gè)分支(master)處理 bug ``` git stash push -m '功能開發(fā)中' git checkout master ``` 場(chǎng)景2、需要回到新功能編寫前的狀態(tài),也就是 dev 分支的最新提交記錄 ``` git stash push -m '功能開發(fā)中' ``` 使用 git stash 的前提必須是版本庫中已有提交記錄,否則會(huì)出現(xiàn)下面提示 ``` $ git stash # 您還沒有初始提交 You do not have the initial commit yet ``` 沒有可以儲(chǔ)存的內(nèi)容(工作區(qū)中沒有更改,暫存區(qū)中也沒有內(nèi)容) ``` $ git stash # 沒有要保存的本地更改 No local changes to save ``` #### 2. 添加儲(chǔ)藏 --- 添加儲(chǔ)藏 ``` git stash ``` `-m,--message` 添加儲(chǔ)藏和備注信息 ``` git stash push -m <message> ``` #### 3. 查看儲(chǔ)藏 --- 查看所有儲(chǔ)藏(所有分支共享儲(chǔ)藏內(nèi)容,而不是像提交記錄每個(gè)分支都是獨(dú)立的) ``` git stash list ``` 查看文件變動(dòng)差異 ``` # 顯示哪些文件變動(dòng)了幾行 git stash show <stash> # 顯示更加詳細(xì)的變動(dòng)信息,可以看到新增、減少了什么內(nèi)容 git stash show -p <stash> ``` #### 4. 刪除儲(chǔ)藏 --- 刪除某個(gè)儲(chǔ)藏 ``` git stash drop <stash> ``` 清除所有儲(chǔ)藏 ``` git stash clear ``` #### 5. 使用儲(chǔ)藏 --- 應(yīng)用儲(chǔ)藏 ``` # 應(yīng)用指定的儲(chǔ)藏 git stash apply <stash> # 應(yīng)用并刪除指定的儲(chǔ)藏 git stash pop <stash> ``` `<stash>` 指的是 `git stash list` 命令輸出結(jié)果左側(cè)的值,如下圖所示 ![](https://img.itqaq.com/art/content/b7b08996660e010ad1c26ff204be61c5.png) ``` # 錯(cuò)誤:您對(duì)以下文件的本地更改將被“合并”覆蓋 error: Your local changes to the following files would be overwritten by merge: 1.txt # 請(qǐng)?jiān)诤喜⑶疤峤换螂[藏更改 Please commit your changes or stash them before you merge. ``` #### 6. 常見用法 --- ``` # 添加存儲(chǔ) git stash push -m <message> # 查看所有存儲(chǔ) git stash list # 查看儲(chǔ)藏文件差異 git stash show -p <stash> # 應(yīng)用儲(chǔ)藏 git stash apply <stash> # 應(yīng)用并刪除儲(chǔ)藏 git stash pop <stash> # 刪除指定儲(chǔ)藏 git stash drop <stash> # 清空儲(chǔ)藏 git stash clear ```