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

想要獲取更多文章可以訪問我的博客 - 代碼無止境

在開發(fā)的過程中可能會(huì)經(jīng)常出現(xiàn)下面這種情況,我們正在開發(fā)某個(gè)功能,當(dāng)前分支的內(nèi)容比較亂,不太適合提交,而此時(shí)我們需要切換到其他分支上處理一些事情。這個(gè)時(shí)候該怎么辦呢?難道是將修改先備份然后丟棄修改再切換到另外的分支上?答案肯定是否定的,今天我們就來介紹如何使用git stash命令來完美解決這種窘境。

準(zhǔn)備

首先我們需要準(zhǔn)備一個(gè)git倉庫,并準(zhǔn)備兩個(gè)分支(masterdev):


mkdir git-test

cd git-test

git init

touch README.md

git add README.md

git commit -m "第一次提交"

git checkout -b dev

使用stash命令

在上一步,我們已經(jīng)切換到dev了,現(xiàn)在我們在README.md上隨便修改一點(diǎn)東西來模擬凌亂的分支:


$ 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")

現(xiàn)在假如我們急需切換到master分支上處理一些事情,所以我們需要使用git stash來藏儲(chǔ)dev分支上的修改。


git stash

然后我們再執(zhí)行一下git status來看下dev上的情況:


$ git status

On branch dev

nothing to commit, working tree clean

我們會(huì)發(fā)現(xiàn)dev分支變干干凈凈了,因?yàn)閯倓偟男薷囊呀?jīng)被藏儲(chǔ)了。那么或許你會(huì)問,我們應(yīng)該怎么查看有哪些藏儲(chǔ)呢?當(dāng)我們在master分支上處理完事情后回到dev分支又該如何恢復(fù)我們藏儲(chǔ)的內(nèi)容呢?首先我們執(zhí)行git stash list我們查看所有的藏儲(chǔ)記錄:


$ git stash list

stash@{0}: WIP on dev: 9ad7304 第一次提交

如何恢復(fù)呢?可以使用git stash pop恢復(fù)第一條存儲(chǔ)記錄,也可以使用git stash apply stash@{n}命令來恢復(fù)指定的存儲(chǔ)記錄。


$ 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

然后我們就會(huì)發(fā)現(xiàn)剛剛的修改恢復(fù)回來了。但是此時(shí)我們再次執(zhí)行git stash list會(huì)發(fā)現(xiàn)剛剛恢復(fù)的藏儲(chǔ)記錄還存在,我們需要執(zhí)行git stash drop stash@{n}刪掉它。


$ git stash drop stash@{0}

Dropped stash@{0} (8c0b9fa5bc217c7876ab825147ee76712364887e)

再執(zhí)行git stash list的時(shí)候就會(huì)發(fā)現(xiàn)這條藏儲(chǔ)被刪除了,當(dāng)然如果我們恢復(fù)的是棧頂?shù)牟貎?chǔ)記錄的話我建議直接使用git stash pop命令,因?yàn)樵诨謴?fù)的同時(shí)會(huì)自動(dòng)刪除掉棧頂?shù)牟貎?chǔ)記錄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,710評(píng)論 9 163
  • 一:Git是什么? Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。 二:SVN與Git的最主要的區(qū)別? SVN是集...
    Splendid飛羽閱讀 329評(píng)論 0 0
  • 原文地址主要用到的命令: git config user.name 設(shè)置用戶名 git config user....
    AFinalStone閱讀 482評(píng)論 0 2
  • 本系列教程來自廖雪峰的官方網(wǎng)站,現(xiàn)在搬運(yùn)過來,目的幫助自己和小白學(xué)習(xí)收藏!附贈(zèng):常用git命令清單 目錄 前言 創(chuàng)...
    Blizzard_liu閱讀 1,151評(píng)論 0 4
  • 聲明:這篇文章來源于廖雪峰老師的官方網(wǎng)站,我僅僅是作為學(xué)習(xí)之用 Git簡介 Git是什么? Git是目前世界上最先...
    橫渡閱讀 3,976評(píng)論 3 27