Giao diện
3. Reset & Revert (The Undo Button)
IMPORTANT
CRUCIAL DISTINCTION:
- Reset: Cỗ máy thời gian (Quay lại quá khứ, xóa bỏ tương lai). -> Nguy hiểm.
- Revert: Tạo một commit mới để hủy bỏ tác dụng của commit cũ. -> An toàn.
3.1 Git Reset (Dùng cho Local Branch)
Bạn lỡ commit một đống rác rưởi? Bạn muốn quay lại thời điểm trước khi commit?
bash
git reset --soft HEAD~1- Soft: Hủy commit gần nhất, nhưng giữ code lại trong Staging Area. (An toàn nhất để sửa lại commit).
bash
git reset --hard HEAD~1- Hard: Hủy commit, xóa sạch code về trạng thái cũ. (Nguy hiểm tột độ - Code chưa lưu sẽ mất vĩnh viễn).
CAUTION
KHÔNG BAO GIỜ git reset trên branch đã Push lên Server (Shared Branch). Bạn sẽ gây ra thảm họa "Non-forward fast" cho đồng đội.
3.2 Git Revert (Dùng cho Shared Branch)
Bạn đã push code lỗi lên main. Bạn không thể reset (vì sẽ làm lệch lịch sử của team). Cách duy nhất là "thừa nhận sai lầm" bằng một commit mới.
bash
git revert <bad-commit-hash>Git sẽ tạo ra một commit mới có nội dung ngược lại hoàn toàn với commit cũ (Thêm thành xóa, xóa thành thêm). Lịch sử sẽ trông như sau:
feat: add login(Lỗi)revert: feat: add login(Sửa sai)
-> An toàn tuyệt đối cho team.