[Git] 用 git stash 命令暫存目前的修改工作,回復上次 commit 的版本

[Git] 用 git stash 命令暫存目前的修改工作,回復上次 commit 的版本

今天想要把 App 新的更新釋出了,但是有其他的東西改到一半,

不想要放進去,正好來試試 git 的 stash 功能

(一直以來我都只有用 git 的 add 和 commit :P)~

 

首先用 git status 看一下狀態,可以看到我有兩個檔案被修改了,還沒加到索引:

testuser@localhost ~ $ git status

On branch master
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

    modified:   library_taipei_city.js
    modified:   popup.js

no changes added to commit (use "git add" and/or "git commit -a")

 

執行 git stash 就會立刻將這兩個已經被修改的檔案,加到暫存區裡面:

testuser@localhost ~ $ git stash

Saved working directory and index state WIP on master: d3f38fd Tainan library: support cancel reserved books
HEAD is now at d3f38fd Tainan library: support cancel reserved books

 

這時再用 git status,會發現已經沒有修改中的檔案了,

去看檔案內容的話,也都回復成最後一個 commit 的狀態:

testuser@localhost ~ $ git status

On branch master
nothing to commit, working tree clean

 

這時候我就可以把我的 App 包裝好釋出啦~

之後想再取回暫存區的工作進度時,執行一下 git stash list 看有哪些暫存工作,

下面列出了一筆 (WIP 應該是 Work-In-Progress 的縮寫):

testuser@localhost ~ $ git stash list

stash@{0}: WIP on master: d3f38fd Tainan library: support cancel reserved books

 

git stash show 可以把這個暫存工作修改到的檔案列出來:

testuser@localhost ~ $ git stash show

 library_taipei_city.js | 12 +++++++++---
 popup.js               |  8 ++++++++
 2 files changed, 17 insertions(+), 3 deletions(-)

 

想繼續中斷的工作的話,下 git stash apply,

就可以將最後一筆 git stash 的記錄再取回來了:

testuser@localhost ~ $ git stash apply

On branch master
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

    modified:   library_taipei_city.js
    modified:   popup.js

no changes added to commit (use "git add" and/or "git commit -a")

 

git 的命令終於又多會用一個啦~

(本頁面已被瀏覽過 1,331 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料