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://gitlab@git.garena.com: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://gitlab@git.garena.com: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