+2

Xử lý tình huống lỡ Push nhầm Commit lên nhánh Remote

Trong quá trình làm việc nhóm với Git, việc lỡ tay commit và đẩy (push) một đoạn code chưa hoàn thiện hoặc sai lệch lên nhánh tính năng (feature branch) là tình huống rất thường gặp. Bài viết này sẽ phân tích vấn đề và đưa ra phương pháp xử lý nhanh chóng, chuẩn xác để đưa nhánh về trạng thái ổn định.


1. Vấn đề (Problem)

  • Tình huống thực tế: Bạn đã thực hiện một commit mới (ví dụ: commit 8145f03) và push trực tiếp lên nhánh làm việc trên remote (GitHub/GitLab), dẫn đến việc commit này xuất hiện trong danh sách Pull Request.
  • Yêu cầu đặt ra: Đoạn code ở commit 8145f03 chưa đạt yêu cầu hoặc không mong muốn xuất hiện trên nhánh. Bạn cần loại bỏ hoàn toàn commit này và khôi phục lại trạng thái mã nguồn tại một mốc ổn định trước đó (ví dụ: commit 1eb319e).

2. Phương pháp giải quyết (Methodology)

Để giải quyết triệt để vấn đề trên, chúng ta kết hợp lệnh git reset ở máy local và git push --force để đồng bộ lại với remote repository. Các bước thực hiện cụ thể như sau:

Bước 1: Kiểm tra và chuyển về đúng nhánh làm việc

Đảm bảo bạn đang đứng ở nhánh tính năng cần xử lý bằng lệnh chuyển nhánh:

git checkout <ten_nhanh_tinh_nang>

Chạy git status để chắc chắn khu vực làm việc (working tree) không có file nào đang bị thay đổi dang dở.

Bước 2: Reset lịch sử commit về mốc ổn định

Sử dụng tùy chọn --hard để ép con trỏ của Git quay trở lại commit mục tiêu (1eb319e), đồng thời xóa bỏ hoàn toàn các thay đổi của commit lỗi nằm phía trên:

git reset --hard 1eb319e

Bước 3: Đồng bộ hóa trạng thái lên Remote (Force Push)

Vì commit lỗi đã được đẩy lên server trước đó, lịch sử trên remote đang ở trạng thái mới hơn. Bạn cần bắt server cập nhật theo lịch sử hiện tại của máy local:

git push origin <ten_nhanh_tinh_nang> --force

⚠️ Lưu ý quan trọng: Hành động force push sẽ ghi đè lịch sử trên remote và làm mất vĩnh viễn các thay đổi trong commit lỗi. Hãy chắc chắn rằng bạn không còn cần đoạn code ở commit đó trước khi thực hiện, và chỉ dùng lệnh này trên các nhánh tính năng cá nhân.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.