目錄
- 1,介紹
- 場景1:
- 場景2:
- 2,常用命令
- 2.1,基礎
- 2.2,進階
- 1,存儲時指定備注
- 2,通過索引來操作指定的存儲
- 3,修改存儲規則
- 2.3,查看 stash 修改的具體內容
1,介紹
場景1:
如果正在A分支做開發,但 B 分支的代碼測出bug需要修改,所以需要從A分支切換到B分支。
此時可這樣處理:在A分支 add + commit 之后,再切換到 B 分支。但這樣做有2個問題:
- 增加了不必要的 commit,雖然之后可以通過
git commit --amend
來修改, - A 分支的功能寫了一半,此時 commit,到時再切換回 A 分支時還得查看 commit 才能知道之前修改的內容,比較麻煩。
場景2:
在 A 分支開發到一半發現使用錯分支了,應該在 B 分支開發,需要將當前已修改的內容得全部平移到B分支,同時不影響當前分支和版本庫。
上面的情況,最好用的辦法就是 stashes 存儲棧,它的所有操作不會影響到版本庫。
2,常用命令
stashes 存儲棧,遵循后進先出。
2.1,基礎
# 查看幫助(所有命令列表)
git stash -h
# 將當前工作區和暫存區的代碼存儲到 stashes棧中。
git stash
# 取出最近的一條 stash,并在 stashes 棧中刪除。
git stash pop
# 取出最近的一條 stash,stashes 棧中不刪除。
git stash apply# 不取出,直接在 stashes 棧中刪除最近的一條 stash
git stash drop
所以,git stash pop
= git stash apply
+ git stash drop
# 查看 stashes 列表
git stash list
# 清空 stashes 棧
git stash clear
所以,
場景1,可以直接在 A 分支執行 git stash
,在 B 分支開發完之后再切換到 A 分支,執行 git stash pop
即可。
場景2,可以直接在 A 分支執行 git stash
,切換到 B 分支后執行 git stash pop
即可。
2.2,進階
1,存儲時指定備注
git stash save 測試stash
# or
git stash push -m 測試stash
2,通過索引來操作指定的存儲
# 操作 stash@{1}
git stash pop 1
# or 這里一定要加引號,否則報錯。
git stash pop "stash@{1}"
git stash apply
和git stash drop
同理。
3,修改存儲規則
默認存儲規則:不包括工作區新增文件(未被跟蹤的文件)和 .gitignore
忽略的文件,包括工作區和暫存區的修改。
-u
或--include-untracked
表示包括未被跟蹤的文件。
git stash save 備注 -u
-a
或--all
表示包括.gitignore
忽略的文件。
git stash save 備注 -a
-k
或--keep-index
表示不包括暫存區的修改。
git stash save 備注 -k
2.3,查看 stash 修改的具體內容
查看命令 git stash show
并沒有介紹,是因為 vscode 自帶的版本管理非常好用,可以詳細的查看每個 stash 做了哪些修改。
可以看到不止是 stashes,每條 commit 也能隨時查看。
以上。