Tình huống khẩn cấp — ưu tiên speed và safety:
Option 1: Deploy từ previous tag (nhanh nhất, an toàn nhất):
bash
git checkout v2.3.1 # version trước khi deploy — sẽ ở detached HEAD state
# Tạo branch tạm hoặc trigger CI/CD từ tag trực tiếp
# Rebuild và deploy
# Git history không thay đổi gìPhù hợp khi: CI/CD pipeline deploy từ tag, có artifact của version trước sẵn sàng. Lưu ý: git checkout <tag> đặt repo vào detached HEAD — tốt nhất là trigger CI/CD pipeline từ tag thay vì build thủ công.
Option 2: git revert (nếu không có artifact):
bash
git revert -m 1 <merge-commit-hash> # revert PR merge
# hoặc revert từng commit:
git revert HEAD~3..HEAD
git push origin main
# Trigger deploySo sánh:
- Tag redeploy: nhanh hơn, không thay đổi git history, artifact cũ có thể đã có sẵn
- Revert: tạo rõ ràng record "chúng ta đã revert", dễ re-apply sau khi fix
Sau emergency:
bash
# Fix bug trên feature branch
# Revert the revert (nếu dùng revert):
git revert <revert-commit> # re-enables the feature
# Test kỹ, deploy lạiQuan 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?