Stash暫存
本單元指令:
git stash
git stash -u
git stash pop
git stash list
git stash save -u "註解在此"
git stash clear
如果你正在開發一個新的功能,並在feature功能分支進行開發,忽然老闆叫你放下手邊工作,
去解決一個bug,這時怎麼辦呢?你的Work Direction和Stage Area都還留有未處理的檔案,
這時無法切換到其他分支,除非你馬上將所有檔案提交(Commit)出一個版本,但這樣的版本
內容是無意義的,有其他方法嗎?
這時救星出現了,你可以用Stash
指令將你目前的Work Direction和Stage Area的檔案先
暫存起來,等到bug解決完後,再回來將暫存取出,就可以再繼續開發啦!
請先建立本單元範例:
mkdir stash1
cd stash1
git init
echo 1 > README.md
git add .
git commit -m "init"
git branch feature
echo 1 > 1.txt
git add .
git commit -m "C1"
git branch bug
git checkout feature
echo 1 > 2.txt
git add .
git commit -m "C2"
echo 1 > a.txt
echo 1 > b.txt
echo 1 > c.txt
git add c.txt
目前所在分支是feature,而且WD和Stage有開發未完成的檔案:
- WD區: a.txt、b.txt
- Stage區: c.txt
接著我要將這些檔案都先暫存起來,可用git satsh
指令,但這個指令只會將Stage區的c.txt暫存起來而已。
如果要將WD區和Stage區的檔案a.txt, b.txt, c.txt都暫存起來,就要執行:
git stash -u
如果怕自己忘記這個暫存放了啥,可加上註解,指令是
git stash save -u "我是註解"
下完指令後,這3個檔案都暫存起來了,看起來乾乾淨淨^__^
此時我們便可以切換至bug分支,開始修正錯誤:
git branch bug
echo fix > 1.txt
git add .
git commit -m "fix bug 1.txt"
修正完bug後,回到feature分支:
git branch feature
我們先來查詢看暫存是否還在,指令如下:
git stash list
果然可以看到剛才那筆暫存,接下來要把暫存再叫回來,取回暫存的指令是:
git stash pop
YA~檔案又回來了,又可以繼續未完成的工作囉!
補充:如果要刪除暫存,指令是
git stash clear