© 2026 Laravel

Git Reset vs Revert vs Checkout: Làm chủ dòng thời gian

2 phút đọc
#git #troubleshooting #workflow

Mục lục bài viết

Sử dụng các mục để điều hướng nhanh

#1. Bản chất sự khác biệt

  • git reset --hard <commit>: Đập bỏ lịch sử. Quay về commit cũ, mọi commit sau đó bị xóa sạch. Nguy hiểm, chỉ dùng trên local.
  • git revert <commit>: Tạo một commit MỚI ngược lại với commit cũ. An toàn, dùng được trên nhánh đã push.
  • git checkout <commit>: Chuyển sang trạng thái “của quá khứ” (Detached HEAD). Dùng để xem lại code, không làm thay đổi lịch sử.

#2. Khi nào áp dụng

  • Code sai, chưa push: git reset --hard HEAD~1 (xóa commit đó đi cho sạch).
  • Code sai, đã push: git revert <commit_id> (tạo commit mới đè lên để sửa lỗi mà không làm rối lịch sử chung).
  • Xem lại code cũ: git checkout <commit_id>.

#3. Phỏng vấn Senior

Q: Tại sao Revert an toàn hơn Reset? A: Reset làm mất dữ liệu trên nhánh chung, khiến mọi người khác bị conflict khi pull. Revert chỉ thêm commit mới, lịch sử được bảo toàn. Q: Tình huống: Lỡ tay reset –hard xong mới nhận ra mình quên lưu code? A: Dùng git reflog để tìm lại commit ID đã bị xóa khỏi HEAD, sau đó git reset --hard <id> để khôi phục. (Git gần như không bao giờ mất dữ liệu thực sự).

Bài viết liên quan