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.
$ 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
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
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.