1. 程式人生 > >git stash 詳解

git stash 詳解

需求分析

人和電腦一樣,會遇到中斷,需要儲存現在的上下文轉而去處理其他更緊急的事情。我們在使用git的時候也會遇到這樣的情況。當在需要緊急處理一個bug時,工作區內容又沒有完成,不適合提交,想暫存起來。

方案實施

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

生成測試環境

// 初始化倉庫,進行一次提交
# 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 [email protected]{0}: WIP on master: 440e976 init // 恢復暫存區和工作區進度 # git stash pop --index [email protected]{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代表進度的編號形如:[email protected]{0}, <>尖括號內的必填

git stash  對當前的暫存區和工作區狀態進行儲存。 
git stash list  列出所有儲存的進度列表。 
git stash pop [--index] [<stash>] 恢復工作進度

--index 引數:不僅恢復工作區,還恢復暫存區
<stash> 指定恢復某一個具體進度。如果沒有這個引數,預設恢復最新進度

如:以下命令恢復編號為0的進度的工作區和暫存區
# git stash pop --index [email protected]{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> 基於進度建立分支

相關推薦

git stash -----mark

git stash詳解 2018年06月24日 23:00:55 淹不死的水 閱讀數:1782 標籤: gitgit stash 更多 個人分類: git 應用場景: 1 當正在dev分支上開發某個專案,這時專案中出現一個b

git stash

需求分析 人和電腦一樣,會遇到中斷,需要儲存現在的上下文轉而去處理其他更緊急的事情。我們在使用git的時候也會遇到這樣的情況。當在需要緊急處理一個bug時,工作區內容又沒有完成,不適合提交,想暫存起來。 方案實施 git提供了git stash命令來解決這樣的需求。

Git應用第四講:版本回退的三種方式與stash

前言 前情提要:Git應用詳解第三講:本地分支的重要操作 git作為一款版本控制工具,其最核心的功能就是版本回退,沒有之一。熟悉git版本回退的操作能夠讓你真真正正地放開手腳去開發,不用小心翼翼,怕一不小心刪除了不該刪除的檔案。本節除了介紹版本回退的內容之外,還會介紹stash的使用。 一、版本回退 在g

git 使用 (1)——歷史

服務 編輯 元數據 原始的 事先 史記 依然 sub 本地磁盤 版本控制系統(VCS) 有了它你就可以將某個文件回溯到之前的狀態,甚至將整個項目都回退到過去某個時間點的狀態。你可以比較文件的變化細節,查出最後是誰修改了哪個地方,從而導致出現怪異問題,又是誰在何時報告了某個功

git 使用(3)—— 最基本命令 + .gitignore 文件

clu 分隔 ignore abc lob 目的 hat modified 容易 Git 基礎 本章將介紹幾個最基本的,也是最常用的 Git 命令,以後絕大多數時間裏用到的也就是這幾個命令。讀完本章,你就能初始化一個新的代碼倉庫,做一些適當配置;開始或停止跟蹤某些文件;暫存

git 使用(4)—— commit -a -m/diff --staged/rm/mv

art client -s 做的 res use 擴展名 ems 也會 查看已暫存和未暫存的更新 實際上 git status的顯示比較簡單,僅僅是 列出了(修改過的、新創建的、已經暫存但未提交的)文件,如果要查看具體修改了什麽地方,可以用git diff 命令。稍後我們會

git 使用(5)—— get log 查看提交歷史

校驗和 看到了 有一個 基本 detached pack 有意思 lin mls git log 查看 提交歷史 在提交了若幹更新之後,又或者克隆了某個項目,想回顧下提交歷史,可以使用 git log 命令查看。 接下來的例子會用我專門用於演示的 simplegit 項目,

git 使用(6)—— 3種撤消操作

direct ash 存在 其中 分支 stash card mas 相關 接下來,我們會介紹一些基本的撤消操作相關的命令。請註意,有些操作並不總是可以撤消的,所以請務必謹慎小心,一旦失誤,就有可能丟失部分工作成果。 修改最後一次提交 git commit --amend

git add

git reset 工作 合集 git 兩個 tool stat nbsp 方便 git add . :他會監控工作區的狀態樹,使用它會把工作時的所有變化提交到暫存區,包括文件內容修改(modified)以及新文件(new),但不包括被刪除的文件。 git add -u

Git-git rebase

rom 參數 翻譯 .com 做的 mce 基礎 pre 手工 git合並代碼方式主要有兩種方式,分別為:1、merge處理,這是大家比較能理解的方式。2、rebase處理,中文此處翻譯為衍合過程。 git rebase操作講解例子: 1 cd /usr/local/t

git pull

git pull命令的作用是,取回遠端主機某個分支的更新,再與本地的指定分支合併。它的完整格式稍稍有點複雜。 $ git pull <遠端主機名> <遠端分支名>:<本地分支名> 比如,取回origin主機的next分支,與本地的master分支合併,

使用SourceTree git專案

這篇文件的目的是:讓使用Git更輕鬆。 看完這篇文件你能做到的是: 1、簡單的用Git管理專案。 2、怎樣既要開發又要處理髮布出去的版本bug情況。 SourceTree是一個免費的Git圖形化管理工具,mac下也可以安裝。 參考: 1、從Git

git指令總結

Git是目前最流行的版本管理系統,學會Git幾乎成了開發者的必備技能。 Git有很多優勢,其中之一就是遠端操作非常簡便。本文詳細介紹5個Git命令,它們的概念和用法,理解了這些內容,你就會完全掌握Git遠端操作。 git clone git remote git fetch

git使用 terminal命令/sourceTree/Xcode

說到git,必須要先談一下版本控制。什麼是版本控制?我為什麼要關心它呢?版本控制是一種記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。 版本控制的型別大致可以分為三大類: 本地

即拉即用:你不知道的持續整合的3個Git Hooks

在構建之外新增自動化的手段,是真正用好CI的關鍵。如果你已經用了一段時間的Git了,相信你可能聽說過Git Hooks,甚至可能簡單的上手玩了玩。Git Hooks在持續整合的語境中十分神奇,所以在本文中,我將深入介紹三個用例,並教你學會將現成可用的Hooks運

Git使用】使用Egit克隆專案到本地圖解

第一步:   開啟Eclipse的Git檢視,在檢視中單擊"Clone a Git repository" 如圖:      第二步:在彈出的Clone Git Repository介面中輸入要克隆

git 使用-- tag打標籤

Git 的標籤管理。跟大多數的 VCS 工具一樣,git 也有在歷史狀態的關鍵點“貼標籤”的功能,一般人們用這個功能來標記釋出點(例如’v1.0′)。列出git中現有標籤 要想列出git中現有的所有標籤,輸入’git tag’命令執行即可: $ git tag v0.

git log

git log 可以讓我們檢視提交commit history,接下來我們來一起探索git log提供的引數。 $ git log commit 0005d1e3f54b79fe4707fbccc44b89e0fb4ce565 (HEAD -> master, origin/m

MyEclipse+Git使用

【說明】 1.關於git的介紹和使用請參考其他文章,本文只是具體說myeclipse+git的使用 2.由於使用myeclipse+git,所以不需要安裝git客戶端和圖形化程式,只需要一個egit外掛 3.同樣適用於eclipse+git, 【安裝egit外掛】 1.方法一:

git rebase

1 git合併程式碼方式主要有兩種方式,分別為: (1) merge處理,這是大家比較能理解的方式。 (2) rebase處理,中文此處翻譯為衍合過程。 2 git rebase操作講解例子: mkdir hellogit cd hellogit #