Menu
CoddyTech

Git Revert

Cập nhật lần cuối

git revert hoàn tác một commit bằng cách tạo một commit mới áp dụng phần đảo ngược của các thay đổi trong commit đó. Vì lệnh này thêm lịch sử thay vì viết lại, revert là cách an toàn để hoàn tác một commit đã push. Khác với git reset, nó không buộc mọi người phải xử lý một nhánh bị viết lại.

Bạn có thể thử các lệnh này trong terminal playground: một shell thật ngay trên trình duyệt, không cần cài đặt gì.

git revert giữ nguyên commit lỗi và thêm một commit mới đảo ngược nó. Lịch sử không bao giờ bị viết lại.

Cú pháp

LệnhTác dụng
git revert HEADRevert commit gần nhất
git revert <hash>Revert một commit cụ thể theo hash
git revert HEAD~2..HEADRevert một dải commit
git revert -n <hash>Revert nhưng chưa commit (chỉ stage)
git revert -m 1 <merge-hash>Revert một merge commit, giữ commit cha số 1

Trong lúc revert

Nếu revert gặp xung đột, hãy giải quyết rồi tiếp tục.

LệnhTác dụng
git revert --continueTiếp tục sau khi giải quyết xung đột
git revert --abortHủy lần revert đang dở
git revert --skipBỏ qua commit hiện tại và tiếp tục

revert và reset

Đặc điểmgit revertgit reset
Viết lại lịch sửKhôngCó
An toàn với commit đã pushCóKhông
Tạo commit mớiCóKhông
Hoàn tác một commit ở giữaCóKhá rắc rối

Câu hỏi thường gặp về git revert

git revert và git reset khác nhau thế nào?
git revert thêm một commit mới để hoàn tác thay đổi của một commit trước đó, giữ nguyên lịch sử, nên an toàn với commit bạn đã push. git reset lùi con trỏ nhánh và viết lại lịch sử, ổn với commit cục bộ nhưng nguy hiểm trên nhánh dùng chung. Dùng revert để hoàn tác commit đã công khai, reset để hoàn tác commit cục bộ.
Làm sao revert một commit đã push?
Chạy git revert <hash> (hoặc git revert HEAD cho commit mới nhất), rồi push commit revert mới. Vì revert không viết lại lịch sử, đây là cách đúng để hoàn tác một commit dùng chung: không cần force push và không làm phiền đồng đội đã pull commit đó về.
Làm sao revert một merge commit?
Merge commit có hai commit cha, nên Git cần biết giữ lại nhánh lịch sử nào. Dùng git revert -m 1 <merge-hash>, trong đó -m 1 bảo Git giữ commit cha đầu tiên (thường là nhánh bạn merge vào). Revert một merge sẽ hoàn tác các thay đổi đã merge nhưng vẫn giữ lần merge trong lịch sử.
Có revert nhiều commit cùng lúc được không?
Được. Truyền một dải như git revert HEAD~2..HEAD để revert hai commit cuối, hoặc liệt kê nhiều hash. Mặc định Git tạo một commit revert cho mỗi commit bị revert; thêm -n để stage toàn bộ phần đảo ngược mà chưa commit, rồi tự tạo một commit duy nhất.
Có thể luyện tập lệnh này online không?
Có. Mở terminal playground để chạy git revert 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 hoàn tác thay đổi.
Hình minh họa các ngôn ngữ lập trình của Coddy

Học Git cùng Coddy

Bắt đầu