Menu
CoddyTech

Git Commit --amend

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

git commit --amend thay commit gần nhất bằng một commit mới, cho phép bạn sửa message hoặc thêm những tệp đã quên stage. Lệnh này không tạo thêm commit thứ hai mà viết lại commit cuối. Vì thao tác này làm thay đổi hash của commit, chỉ amend những commit bạn chưa push.

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

git commit --amend thay commit cuối cùng bằng một bản viết lại, thay vì thêm commit thứ hai.

Cú pháp

LệnhTác dụng
git commit --amendSửa commit cuối và message của nó
git commit --amend -m "new message"Đổi message của commit cuối ngay trên dòng lệnh
git commit --amend --no-editThêm các tệp đã stage, giữ nguyên message

Tình huống thường gặp

Mục tiêuLệnh
Sửa lỗi chính tả trong message cuốigit commit --amend -m "fixed message"
Thêm tệp bị quên vào commit cuốigit add file rồi git commit --amend --no-edit
Amend một commit đã push (cẩn thận)amend, rồi git push --force-with-lease

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

Làm sao để đổi message của commit cuối?
Chạy git commit --amend -m "new message" để thay ngay trên dòng lệnh, hoặc git commit --amend để mở trình soạn thảo và viết lại ở đó. Lệnh này viết lại commit cuối với message mới, vì vậy đừng làm với commit đã push trừ khi bạn sẵn sàng force push.
Làm sao để thêm tệp bị quên vào commit cuối?
Stage tệp bằng git add <file>, rồi chạy git commit --amend --no-edit. Cờ --no-edit giữ nguyên message hiện có và chỉ gộp những thay đổi vừa stage vào commit trước đó.
git commit --amend có tạo commit mới không?

Không, nó thay thế commit cuối chứ không thêm commit. Kết quả trông như một commit duy nhất, nhưng về mặt kỹ thuật đó là một commit mới với hash mới, thế chỗ commit cũ. Đó là lý do amend lịch sử đã chia sẻ đòi hỏi phải force push.

Amend một commit đã push có an toàn không?
Chỉ khi bạn cẩn thận. Amend viết lại commit, nên sau khi push bạn sẽ cần git push --force-with-lease, việc này có thể gây rắc rối cho bất kỳ ai đã pull commit gốc. Trên nhánh dùng chung, hãy tạo commit mới hoặc dùng git revert thay vì amend.
Có thể luyện tập lệnh này online không?
Có. Mở playground terminal để chạy git commit --amend 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 sửa commit từng bước.
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