iT邦幫忙

1

Git stash

今天在一個情境下,假如我們在一個分支下做開發,但還沒開發完成,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。

https://ithelp.ithome.com.tw/upload/images/20200706/20126182o2WbCL5HXC.png

利用git stash save可將我們當前還沒commit的修改都暫存起來預設只會儲存tracked files,如果要暫存untracked files,可透過git stash save --include-untracked

https://ithelp.ithome.com.tw/upload/images/20200706/20126182rOzK8iQM5t.png

git stash list:可查看暫存區有多少commit。
git stash -h:可查看指令的提示。

https://ithelp.ithome.com.tw/upload/images/20200706/20126182cLFznvMuBV.png

git stash pop:可將暫存區的commit取出來,而架構是先進後出,可發現我們第一次所取出來的為untracked file也就是我們第二次儲存的修改。

https://ithelp.ithome.com.tw/upload/images/20200706/20126182Heg9G3Pm54.png

注意stash是存在於local,當我們local的環境消失或是電腦壞掉,那stash所存的修改也會消失,所以stash比較適合短時間內的保存,所以保險作法還是直接commit暫時push至遠端,需要時在拉下來比較安全。


尚未有邦友留言

立即登入留言