Rick's DevNotes
筆記關於我作品集
筆記類別
  • 全部
  • DockerDocker
  • NetworkNetwork
  • RxJSRxJS
  • NginxNginx
  • TypeScriptTypeScript
  • Data_Structure_And_AlgorithmData Structure And Algorithm
  • JavaScriptJavaScript
  • PostgreSQLPostgreSQL
  • ReactReact
  • GitGit

© 2026 Rick's DevNotes. All rights reserved.

# Git

建立時間:2021/04/18

Git 筆記:Reflog 操作與復原指南

後悔剛才的 Git 操作嗎? 使用 Reflog 吧!

假設我們搞砸了某些事,例如不小心撤銷重要 commit 或是 Rebase 時弄亂了history ,此時反悔還來得及,因為 Git 總是記錄著我們在 Repo 內的各種操作 (在哪條分支、做了哪些事...),因此可以透過 Git Reflog 指令來檢視我們的操作紀錄,並且用來恢復失誤的操作。

Reflog = Reference + Log

Reflog 只限於在本地端使用,而且會過期

Git總是記錄著我們在 Repo 內的各種操作,並將記錄存放在本地電腦 (Local) 的 . Git/logs 目錄內,也就是無法在遠端 (Remote) 透過 Reflog 來了解其他人在 Repo 內的 Git 操作紀錄。 此外,Reflog 會清除時間較久遠的紀錄 (約 90 天)。

檢視Git操作紀錄

git reflog show 或是 git reflog show HEAD 會列出在 HEAD 中的操作紀錄,其中 HEAD@{ 0 } 代表最新的操作, HEAD@{ } 內數字越大,代表時間越久遠。

若要檢視在特定分支上的紀錄,也可以輸入 git reflog show < branch-name > 。

Timed References

透過在 reference@{ } 內輸入時間點,並搭配 diff 、 checkout 等指令進行操作。

復原失誤的操作

要復原失誤的操作,首先可以先透過 git reflog show < reference > 來檢視該紀錄的位置 ( qualifier ,也就是 @ 內的數字),如下方示範如何將失誤的操作復原:

下方是 Git 最初的狀態:

假設我因為意外,不小心透過 git reset --hard 將 db727ba 後面的 commit 撤銷了 ( commit fb5072a 消失了)。

此時的我們可以透過 git reflog show master 檢視剛才的操作紀錄,其中 master@{1} 就是我們想要恢復的位置。

透過 git reset -hard master@{1} 恢復

參考資料

  • The Git & Github Bootcamp