# Khôi phục Code bằng Git reflog

19-03-2022 ☕️ ☕️ ☕️ một giờ trướcGit

Git reflog là gì? Nhiều khi bạn lỡ tay reset hard, xóa commit, xóa branch, … . Bạn tá hoả lên và rồi Code lại từ đầu =)). Không sao cả việc code lại sẽ giúp bạn càng nhuần nhuyễn việc mình đang làm. Còn nếu bạn làm biếng như mình thì hãy dùng git reflog.

Reflog là một công cụ mạnh mẽ trong git, nó như cỗ máy thời gian giúp ta khôi phục bất cứ hành động nào và nhảy về vị trí đó bằng commit hash.

Xem reflog để khôi phục lại 1 commit bất kì

$ git reflog 0272a7e HEAD@{1}: reset: moving to HEAD~ 4e33eb9 HEAD@{2}: commit: Add common components 0232a9e HEAD@{3}: commit: Add i18n config 4d3afe9 HEAD@{8}: commit: Add storybook c1fe83d HEAD@{9}: commit: Add alias TS b5d314a HEAD@{10}: commit: Add common utils c528ae5 HEAD@{11}: pull: Fast-forward ...

0232a9e hoặc HEAD@{3} là id của Add i18n config. Để khôi phục lại commit đó

git reset --hard 0232a9e HEAD is now at 0232a9e Add i18n config

Lỡ tay reset —hard

Tương tự như trên, ta xem lại reflog

$ git reflog 0272a7e HEAD@{1}: reset: moving to HEAD~ 4e33eb9 HEAD@{2}: commit: Add common components 0232a9e HEAD@{3}: commit: Add i18n config 4d3afe9 HEAD@{8}: commit: Add storybook c1fe83d HEAD@{9}: commit: Add alias TS b5d314a HEAD@{10}: commit: Add common utils c528ae5 HEAD@{11}: pull: Fast-forward ...

0272a7e là commit reset HEAD, 4e33eb9 là commit bị mất bạn cần sẽ nhảy đến. Để khôi phục

git reset --hard 4e33eb9 HEAD is now at 4e33eb9 Add common components

Lỡ tay xóa branch

Trong trường hợp bạn lỡ xóa branch bằng branch -D thì cũng có thể dễ dàng khôi phục như trường hợp mất commit.

$ git br -D test-ref-log Deleted branch test-ref-log (was `0272a7e`).

Ta xem lại lịch sử bằng reflog

$ git reflog c1fe83d HEAD@{0}: checkout: moving from test-ref-log to master 0272a7e HEAD@{1}: reset: moving to 0272a7e

Trạng thái muốn quay lại là 0272a7e, vì thế

$ git branch develop 0272a7e $ git checkout develop

Và chúng ta sẽ quay lại branch vừa bị xóa lúc nãy.

Bình luận