想要獲取更多文章能夠訪問個人博客 - 代碼無止境。git
在開發的過程當中可能會常常出現下面這種狀況,咱們正在開發某個功能,當前分支的內容比較亂,不太適合提交,而此時咱們須要切換到其餘分支上處理一些事情。這個時候該怎麼辦呢?難道是將修改先備份而後丟棄修改再切換到另外的分支上?答案確定是否認的,今天咱們就來介紹如何使用git stash
命令來完美解決這種窘境。bash
首先咱們須要準備一個git倉庫,並準備兩個分支(master
和dev
):app
mkdir git-test
cd git-test
git init
touch README.md
git add README.md
git commit -m "第一次提交"
git checkout -b dev
複製代碼
在上一步,咱們已經切換到dev
了,如今咱們在README.md
上隨便修改一點東西來模擬凌亂的分支:ui
$ git status
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
複製代碼
如今假如咱們急需切換到master
分支上處理一些事情,因此咱們須要使用git stash
來藏儲dev
分支上的修改。spa
git stash
複製代碼
而後咱們再執行一下git status來看下dev上的狀況:code
$ git status
On branch dev
nothing to commit, working tree clean
複製代碼
咱們會發現dev
分支變乾乾淨淨了,由於剛剛的修改已經被藏儲了。那麼或許你會問,咱們應該怎麼查看有哪些藏儲呢?當咱們在master
分支上處理完事情後回到dev
分支又該如何恢復咱們藏儲的內容呢?首先咱們執行git stash list
咱們查看全部的藏儲記錄:開發
$ git stash list
stash@{0}: WIP on dev: 9ad7304 第一次提交
複製代碼
如何恢復呢?可使用git stash pop
恢復第一條存儲記錄,也可使用git stash apply stash@{n}
命令來恢復指定的存儲記錄。get
$ git stash apply stash@{0}
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.md
複製代碼
而後咱們就會發現剛剛的修改恢復回來了。可是此時咱們再次執行git stash list
會發現剛剛恢復的藏儲記錄還存在,咱們須要執行git stash drop stash@{n}
刪掉它。博客
$ git stash drop stash@{0}
Dropped stash@{0} (8c0b9fa5bc217c7876ab825147ee76712364887e)
複製代碼
再執行git stash list
的時候就會發現這條藏儲被刪除了,固然若是咱們恢復的是棧頂的藏儲記錄的話我建議直接使用git stash pop
命令,由於在恢復的同時會自動刪除掉棧頂的藏儲記錄。string