找回消失的 Patch
在 git 的世界裡,凡事 HEAD 發生改變都會被記錄下來
哪些時候 HEAD 會發生改變呢?
- git commit- 提交一份新的 patch, - HEAD會轉移到新的 patch
- git reset --hard <commit_id>- 切換 patch 的時候 
- git cherry-pick/revert ...- 挑入/挑出 patch 的時候 
- git checkout <branch>- 切換分支的時候 
- git merge/rebase ...- 合併分支的時候 
上述一些還沒提到的指令,我們在後面都會陸續為大家介紹
使用 git reflog 來查看 HEAD 的修改紀錄
$ git reflog

git reflog 列出了 HEAD 改變的歷史紀錄
| Commit Id | Short Name | Command | Description | 
|---|---|---|---|
| fd4f99e | HEAD@{0} | reset | moving to fd4f99e | 
| 89ca8a4 | HEAD@{1} | reset | moving to HEAD^^ | 
| fd4f99e | HEAD@{2} | reset | moving to HEAD^ | 
| fd4f99e | HEAD@{3} | commit | Rename numbers.txt to num.txt | 
| edb3d9c | HEAD@{4} | reset | moving to HEAD^ | 
| ... | ... | ... | ... | 
我們可以從這裡看出我們當時在切換 HEAD 時下了什麼指令,以及做了什麼操作的簡易說明
我們可以使用 git show 來查看任一個 patch 的內容
可以用 commit id 或是 short name 來查詢
$ git show <commit id>
$ git show <short name>

這份紀錄至少會保存一個月,所以你完全不用擔心 reset 掉的 patch 會不見
都可以從這裡找得到
使用 git log -g 查看 reflog 的詳細內容

本章回顧
- 使用 - git reflog來查看- HEAD的修改紀錄
- 使用 - git log -g查看 reflog 的詳細內容