Git Reset --hard
Cập nhật lần cuối
git reset --hard di chuyển nhánh của bạn tới commit đích và ép cả vùng staging lẫn working tree khớp chính xác với commit đó, bỏ đi mọi thay đổi chưa commit trên đường. Đây là dạng phá hủy mạnh nhất của git reset, nên hãy chắc rằng bạn không cần phần việc hiện tại trước khi chạy.
Lỡ reset mất một commit? Hard reset thường vẫn khôi phục được nhờ git reflog. Bạn có thể thử các lệnh này an toàn trong terminal playground: một shell thật ngay trên trình duyệt.
Cú pháp
| Lệnh | Tác dụng |
|---|---|
git reset --hard | Bỏ mọi thay đổi chưa commit (vẫn ở HEAD) |
git reset --hard HEAD~1 | Bỏ commit cuối cùng cùng các thay đổi của nó |
git reset --hard <hash> | Ép nhánh quay về một commit cụ thể |
git reset --hard origin/main | Cho nhánh cục bộ khớp hoàn toàn với remote |
Khôi phục sau hard reset
Phần việc đã commit mà bị reset mất thường vẫn lấy lại được.
| Bước | Lệnh | Kết quả |
|---|---|---|
| 1 | git reflog | Liệt kê các vị trí HEAD từng trỏ tới, kèm hash |
| 2 | git reset --hard <hash> | Quay về commit trước lần reset |
Câu hỏi thường gặp về git reset --hard
git reset --hard thực chất làm gì?
--soft (giữ thay đổi ở trạng thái staged) và --mixed (giữ thay đổi ở trạng thái unstaged), --hard là chế độ duy nhất vứt bỏ thay đổi.Làm sao bỏ toàn bộ thay đổi cục bộ?
git reset --hard không kèm commit để đưa working tree về commit cuối cùng, xóa sạch các chỉnh sửa chưa commit. Để dọn luôn các tệp untracked mà reset không động tới, chạy thêm git clean -fd.Làm sao reset nhánh cho khớp với remote?
git fetch rồi git reset --hard origin/main (thay bằng tên nhánh của bạn). Lệnh này ép nhánh cục bộ khớp chính xác với remote, bỏ đi các commit và thay đổi cục bộ lệch khỏi nó. Rất hữu ích khi nhánh cục bộ bị rối và bạn chỉ muốn lấy phiên bản trên remote.Có hoàn tác được git reset --hard không?
git reflog để tìm commit mà nhánh trỏ tới trước khi reset, rồi git reset --hard <hash> để quay lại. Những thay đổi chưa từng commit (chỉ nằm trong working tree) thì không khôi phục được, nên hãy dùng --hard thận trọng.Có thể luyện tập lệnh này online không?
git reset --hard trong một shell thật ngay trên trình duyệt, không cần cài đặt gì. Khóa học Git tương tác miễn phí của Coddy cũng hướng dẫn từng bước cách reset và hoàn tác thay đổi.