看見別人在用 stash,而自己之前沒有用過,于是查探一番后,終有此文
一、作用
- 把所有未提交的修改(包括暫存的和非暫存的)都保存起來,用于后續(xù)恢復(fù)當(dāng)前工作目錄,而不再 git log 中產(chǎn)生記錄;
- 注意,
stash操作是本地的,不會通過git push命令傳輸?shù)搅硪慌_ Git 上;
- 注意,
二、原理
- Git 內(nèi)部維護一個緩存棧,每次緩存的是換貨就會入棧,需要恢復(fù)的時候直接彈出或者 peak 即可;
二、用法
- 保存,建議添加消息
git stash[ save "<your-message>"]- 默認(rèn)情況下,git stash會緩存下列文件:
- 添加到暫存區(qū)的修改(staged changes)
- Git跟蹤的但并未添加到暫存區(qū)的修改(unstaged changes)
- 但不會緩存一下文件:
- 在工作目錄中新的文件(untracked files)
- 被忽略的文件(ignored files)
-
git stash命令提供了參數(shù)用于緩存上面兩種類型的文件。使用-u或者--include-untracked可以stash untracked文件。使用-a或者--all命令可以stash當(dāng)前目錄下的所有修改。
- 默認(rèn)情況下,git stash會緩存下列文件:
- 應(yīng)用緩存
- 應(yīng)用并刪除最近緩存的文件信息
git stash pop - 獲取棧頂緩存的文件信息:這種方式緩存不會出棧,只會獲取棧頂緩存
git stash apply
- 應(yīng)用并刪除最近緩存的文件信息
- 查看存儲列表(存儲棧中的所有元素)
git stash list - 刪除某個存儲元素
git stash drop <stash-name>- <stash-name>指的是在 list 中每條記錄中,冒號前面的部分;
- 查看指定stash的diff
git stash show[ -p | --patch ]