今天在一個情境下,假如我們在一個分支下做開發,但還沒開發完成,master出現嚴重問題需要優先處理,此時我們直接git checkout master,切換到master的同時,會發現我們還沒開發完分支的修改也被加到master的working directory,這當然不是我們所預想的,所以我們需要將手邊的分支開發暫停並且進行儲存
。
而此時我們可利用git add => git commit,然後就可放心至master分支進行修復問題,而後也能在回到我們開發中的分支,利用git commit -- amend對最後的一次commit進行修改。
而我們也可利用另一個較為簡單的方法git stash。
首先我們在一個分支下創建一個新的檔案,並且修改一個原已存在在分支中的檔案,並且都無commit,利用git status查看,可發現新建檔案的修改在working directory,而原檔案的修改的在staging area。
利用git stash save可將我們當前還沒commit的修改都暫存起來
,預設只會儲存tracked files
,如果要暫存untracked files,可透過git stash save --include-untracked
。
git stash list:可查看暫存區有多少commit。
git stash -h:可查看指令的提示。
git stash pop:可將暫存區的commit取出來,而架構是先進後出,可發現我們第一次所取出來的為untracked file也就是我們第二次儲存的修改。