找回消失的 Patch
在 git 的世界裡,凡事 HEAD
發生改變都會被記錄下來
哪些時候 HEAD
會發生改變呢?
git commit
提交一份新的 patch,
HEAD
會轉移到新的 patchgit 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 的詳細內容