Git 使用小技巧之 Stash 命令藏儲零亂分支

想要獲取更多文章能夠訪問個人博客 - 代碼無止境git

在開發的過程當中可能會常常出現下面這種狀況,咱們正在開發某個功能,當前分支的內容比較亂,不太適合提交,而此時咱們須要切換到其餘分支上處理一些事情。這個時候該怎麼辦呢?難道是將修改先備份而後丟棄修改再切換到另外的分支上?答案確定是否認的,今天咱們就來介紹如何使用git stash命令來完美解決這種窘境。bash

準備

首先咱們須要準備一個git倉庫,並準備兩個分支(masterdev):app

mkdir git-test

cd git-test

git init

touch README.md

git add README.md

git commit -m "第一次提交"

git checkout -b dev

複製代碼

使用stash命令

在上一步,咱們已經切換到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

相關文章
相關標籤/搜索