git 命令之stash詳解

git 詳解

需求分析spa

人和電腦同樣,會遇到中斷,須要保存如今的上下文轉而去處理其餘更緊急的事情。咱們在使用git的時候也會遇到這樣的狀況。當在須要緊急處理一個bug時,工做區內容又沒有完成,不適合提交,想暫存起來。code

方案實施htm

git提供了git stash命令來解決這樣的需求。下面咱們作一個完整實驗來體驗一下:rem

生成測試環境get

// 初始化倉庫,進行一次提交
# git init stash-test
# cd stash-test && echo 'hello'> readme
# git add . && git commit -m "init"

// 修改工做區和暫存區
# echo 'need to be stashed' >> readme
# git add readme

// 查看此時工做區和版本庫區別
# git diff HEAD
diff --git a/readme b/readme
index ce01362..55d6c28 100644
--- a/readme
+++ b/readme
@@ -1 +1,2 @@
 hello
+need to be stashed

執行stash及恢復

// 暫存當前狀態
# git stash

// 查看當前工做區和版本庫區別
# git diff HEAD
==> 此時什麼都沒有輸出,說明工做區被重置爲HEAD指向內容了

// 顯示已暫存列表
# git stash list
stash@{0}: WIP on master: 440e976 init

// 恢復暫存區和工做區進度
# git stash pop --index stash@{0}

// 查看工做區和版本庫區別
# git diff HEAD
diff --git a/readme b/readme
index ce01362..55d6c28 100644
--- a/readme
+++ b/readme
@@ -1 +1,2 @@
 hello
+need to be stashed

噠噠~~以前的工做又回來啦

命令詳解

注:

  •  []方括號中內容爲可選,[<stash>]裏面的stash表明進度的編號形如:stash@{0}, <>尖括號內的必填

git stash 對當前的暫存區和工做區狀態進行保存。
git stash list 列出全部保存的進度列表。
git stash pop [--index] [<stash>] 恢復工做進度

--index 參數:不只恢復工做區,還恢復暫存區
<stash> 指定恢復某一個具體進度。若是沒有這個參數,默認恢復最新進度

如:如下命令恢復編號爲0的進度的工做區和暫存區
# git stash pop --index stash@{0}

git stash [save message] [-k|--no-keep-index] [--patch]

這是git stash保存進度的完整命令形式
使用save能夠對進度添加備註
# git stash save "這是保存的進度"

如今執行list,會發現後面會出現自定義的被合租
# git stash list
stash@{0}: On master: 這是保存的進度

-k和--no-keep-index指定保存進度後,是否重置暫存區
--patch 會顯示工做區和HEAD的差別,經過編輯差別文件,排除不須要保存的內容。和git add -p命令相似

git stash apply [--index] [<stash>] 不刪除已恢復的進度,其餘同git stash pop
git stash drop [<stash>] 刪除某一個進度,默認刪除最新進度
git stash clear 刪除全部進度
git stash branch <branchname> <stash> 基於進度建立分支

相關文章
相關標籤/搜索