Tình huống khẩn cấp — ưu tiên speed và safety:
Option 1: Deploy lại từ previous tag (nhanh nhất, an toàn nhất) — phù hợp khi CI/CD pipeline deploy từ tag và artifact của version trước có sẵn. Trigger pipeline từ tag v2.3.1 trực tiếp; git history không thay đổi gì. Lưu ý: git checkout <tag> đặt repo vào detached HEAD — trigger CI/CD từ tag thay vì build thủ công từ trạng thái đó.
Option 2: git revert (nếu không có artifact):
git revert -m 1 <merge-commit-hash> # revert PR merge
git revert HEAD~3..HEAD # hoặc revert từng commit
git push origin main # → trigger deploySo sánh: tag redeploy nhanh hơn, không đổi history; revert tạo record rõ ràng "chúng ta đã rollback", dễ re-apply sau khi fix.
Sau emergency: fix bug trên feature branch; nếu đã dùng revert thì "revert the revert" (git revert <revert-commit>) để bật lại feature, test kỹ rồi deploy lại.
Quan trọng: không xóa revert commit hay dùng reset trên main — cần audit trail. Post-mortem sau khi ổn định: tại sao bug qua được CI?