Git reflog - browsing history của git

Trong lúc sử dụng git command line interface thì Đạt thấy có nhiều lệnh hay được dùng như

  • checkout
  • pull / fetch
  • merge
  • branch

Đây là những lệnh rất hữu ích, nhưng còn có một lệnh cực hữu ích mà ít người biết hay dùng đó là git reflog. Reflog sẽ cho mình xem được history của git trên máy của mình

Cách dùng:

git reflog

Output example:

1c4aa551 (HEAD -> dat/test/add_testcases_for_substitute, origin/dat/test/add_testcases_for_substitute) HEAD@{0}: commit (amend): Add 2 simple test cases for substitute plugin
2d85e3c8 HEAD@{1}: commit: Add 2 simple test cases for substitute plugin
5622be64 (shopee) HEAD@{2}: checkout: moving from shopee to dat/test/add_testcases_for_substitute
5622be64 (shopee) HEAD@{3}: pull origin shopee: Fast-forward
aa3c14ab (dat/feature/add_foo_plugins) HEAD@{4}: checkout: moving from dat/feature/add_foo_plugins to shopee
aa3c14ab (dat/feature/add_foo_plugins) HEAD@{5}: checkout: moving from shopee to dat/feature/add_foo_plugins
aa3c14ab (dat/feature/add_foo_plugins) HEAD@{6}: clone: from ssh://[email protected]:2222/shopee/devops/coredns.git

Mỗi một dòng log là một hành động mà Đạt đã thực thi trên git.

Để hiển thị thời gian cụ thể mình có thể dùng

git reflog --date=iso

Example output

1c4aa551 (HEAD -> dat/test/add_testcases_for_substitute, origin/dat/test/add_testcases_for_substitute) HEAD@{2018-08-07 15:59:26 +0800}: commit (amend): Add 2 simple test cases for substitute plugin
2d85e3c8 HEAD@{2018-08-07 15:24:15 +0800}: commit: Add 2 simple test cases for substitute plugin
5622be64 (shopee) HEAD@{2018-08-07 15:22:53 +0800}: checkout: moving from shopee to dat/test/add_testcases_for_substitute
5622be64 (shopee) HEAD@{2018-08-06 16:02:40 +0800}: pull origin shopee: Fast-forward
aa3c14ab (dat/feature/add_foo_plugins) HEAD@{2018-07-31 19:09:18 +0800}: checkout: moving from dat/feature/add_foo_plugins to shopee
aa3c14ab (dat/feature/add_foo_plugins) HEAD@{2018-07-31 16:42:59 +0800}: checkout: moving from shopee to dat/feature/add_foo_plugins
aa3c14ab (dat/feature/add_foo_plugins) HEAD@{2018-07-26 18:46:28 +0800}: clone: from ssh://[email protected]:2222/shopee/devops/coredns.git

Dùng reflog để làm gì?

Đạt dùng reflog giống như browser history thôi, lâu lâu commit sai hoặc muốn quay trở về một commit cụ thể nào đấy mà mình lỡ tay reset mất, chưa kịp push lên server thì mình sẽ dùng reflog.

Ví dụ mình muốn trở về commit 5622be64 vì mình biết lúc đó là có code ban đầu chưa thay đổi, thì mình có thể tạo một nhánh mới ở 5622be64

git checkout -b dat/feature/xyz 5622be64
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?