場景:當我們正在master分支開發新功能的時候,突然接到一個任務發現線上出現了一個緊急的BUG需要修復,由於沒有打新分支做這部分新需求,這時正做到半途中....已經把本地代碼修改得花里胡哨了,該怎么辦,有什么辦法快速解決嗎?這時Git stash這個非常實用的功能就派上用場了,將本分支的修改暫存起來。
涉及到的幾個命令:
1、git status:查看工作區文件狀態,列出已經修改的文件
2、 git stash save '自定義描述' :暫存工作區的文件
3、git stash list:查看所有暫存列表
4、git stash pop:恢復暫存的文件,直接將最近一次 stash 的代碼pop出來並刪除stash記錄,還原到stash隱藏之前
5、git stash apply id:恢復暫存的文件,和git stash pop功能一樣,先通過git stash list找到記錄編號,通過編號id恢復。區別在於git stash apply id不會刪除stash記錄。
實際中還原后就沒什么必要在保存stash記錄了,推薦直接用git stash pop就OK了。
IDEA 也可以用可視化界面直接操作:右鍵project > git > repository
拓展:找回清除的 stash 數據
我們能將代碼暫存起來,當然也能將暫存區的數據刪除,如果在沒有恢復暫存代碼的時候不小心將暫存區的數據刪除了該怎么吧?
只需要用這句命令即可:git log --graph --oneline --decorate $( git fsck --no-reflog | awk '/dangling commit/ {print $3}')
找到對應的 id,然后用git stash apply id 命令直接恢復找回即可