假設您正在為您的產品實施的一項新功能。你的代碼是在推進開發進度而客戶不斷升級需求突然來了。正因為如此,你必須保持放下你的新功能,工作幾個小時。你不能提交你的部分代碼,也不能扔掉你的變化。所以,你需要一些臨時空間,在那里你可以存儲你的部分修改,以便以后再提交。
在Git中,藏匿操作需要修改的跟蹤文件和階段的變化,并將其保存在棧上未完成的更改,可以在任何時候重新。
[byron@CentOS project]$ git status -s
M string.c
?? string
現在要切換分支機構為客戶不斷升級,但你不想提交你的工作,所以你會藏匿的變化。要推一個新的藏匿到您的堆棧,運行git stash命令
[byron@CentOS project]$ git stash
Saved working directory and index state WIP on master: e86f062 Added my_strcpy function
HEAD is now at e86f062 Added my_strcpy function
現在你的工作目錄是干凈的,所有的改變都保存在堆棧。讓我們用git status命令驗證。
[byron@CentOS project]$ git status -s
?? string
現在可以安全地切換分支和做其他工作。我們可以看到的藏匿的變化列表通過使用 git stash list 命令。
[byron@CentOS project]$ git stash list
stash@{0}: WIP on master: e86f062 Added my_strcpy function
假設你解決了客戶不斷升級和你要回到你的工作,已經做了一半的代碼。只要執行git stash pop 命令,它會從堆棧中刪除的變化,并把它放在當前工作目錄。
[byron@CentOS project]$ git status -s
?? string
[byron@CentOS project]$ git stash pop
上面的命令會產生以下結果。
# On branch master
# Changed but not updated:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
#
modified: string.c
#
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
#
string
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (36f79dfedae4ac20e2e8558830154bd6315e72d4)
[byron@CentOS project]$ git status -s
M string.c
?? string