Git stash被誤刪恢復策略
阿新 • • 發佈:2022-11-30
場景:
通過stash儲存,被使用git stash drop 丟起。 專案開發中,不想commit提交,但要切換到其他commit或者branch,臨時處理緊急任務,使用 git stash 備份當前的工作內容。但因不當操作使用“git stash drop”,暫存被刪除策略1:
- 要求:知道被刪除的ID
策略2:
- 要求:知道被刪除的大致內容
方式a:
git fsck --lost-found 或者git fsck --unreachable 找到各丟棄的標識ID,如下:可配合通過策略1進行檢視、內容恢復。$ git fsck --unreachable Checking object directories: 100% (256/256), done. unreachable blob 09c039a0e54677c113dafd4494378889b22a37ab unreachable blob 2fc07e1fbbf4751d4fde1db05857a54b890aa5f9 unreachable commit 36c05a804042b9622dd13ef133f737d345f83595 unreachable blob 38400bf13924e1dc93181214e4e4f44e9af063b5 unreachable commit 3b80bea1acb07dce3ee4207bdb613f2aa52a4c78 unreachable blob 454099f6835c71dc35ad051fb411da30e1c11515 unreachable blob 45c0153261c7dc0872ea5db048b34b16b2d4646b unreachable blob 62001790e7e38f8e2e6248e5eb76b5d7f1659750 unreachable blob 7900546139bf5486be9c71cca69190982a5ef581 unreachable blob 7b80cadb286acffc3153963eb1e35bfc4f285a7c unreachable tree 84c027109e118eae511f8ed27801095a451b8b06 unreachable commit 88802967342507b6ccdd721667a49a0f7fb084e2 unreachable blob dc8002335b2eed9110ca1e0c16b3faed1ccbc66f unreachable blob 0201f67c69d93516234b1e86aad444b5efd0edbc unreachable blob 088160e56449dff21367a42ffe0a6dd9dd13f083 unreachable blob 3141ab5a6c2529acaf017931f42a4528d9d9b14b unreachable tree 478138ac916c76ee401fd980e9a12044d416e865 unreachable tree 53418198a575f9adf980068cb2f5a1f285f8f07c unreachable blob 5741e1d3f274e84c9a352db47c05c8ecdbdc152d ......
- 缺點:commitID 數量大(幾百上千個),而且不是根據順序進行排列的,找起來麻煩,不太使用
方式b:
查詢被clear的相關歷史 git log --graph --oneline --decorate $(git fsck --no-reflog | awk '/dangling commit/ {print $3}')
執行命令後黃色字型為曾不可達(丟棄)的記錄ID。如下:
- On:被clear 的stash記錄
- index:被丟失的branch記錄
- 上面為最新記錄
策略3:
- 要求:使用jetBrains
-
方式:
- 點選專案右鍵:選擇“Local History” => "Show History"
- 選中某條記錄,右鍵“Revert”