Để gộp hai commit đã được push thành một commit duy nhất, bạn có thể sử dụng lệnh git rebase -i. Dưới đây là các bước chi tiết:
Lưu ý quan trọng: Nếu bạn đã push commit lên một nhánh chia sẻ với người khác, không nên thực hiện rebase trên nhánh đó. Thay vào đó, nên thông báo cho họ và xem liệu họ đã dựa trên những commit của bạn hay chưa.
Trước hết, hãy chắc chắn bạn đang làm việc trên nhánh mà bạn muốn thực hiện rebase. Sử dụng lệnh git branch để kiểm tra bạn đang ở đúng nhánh.
Sử dụng lệnh sau để bắt đầu quá trình rebase, trong đó HEAD~2 là số commit bạn muốn gộp (ở đây là hai commit):
git rebase -i HEAD~2
Trong trường hợp bạn muốn gộp nhiều hơn hai commit, hãy thay đổi số 2 thành số commit bạn muốn gộp.
Một cửa sổ hoặc trình soạn thảo sẽ mở lên, liệt kê tất cả các commit bạn đang rebase. Nó sẽ có dạng:
pick abc123 First commit message
pick def456 Second commit message
Để gộp hai commit lại với nhau, bạn cần sửa lại pick thành squash hoặc s (cách nhau bằng khoảng trắng). Commit đầu tiên là commit bạn muốn gộp vào commit thứ hai, vì vậy bạn giữ lại commit thứ hai và thay đổi commit đầu tiên như sau:
pick abc123 First commit message
squash def456 Second commit message
Lưu và đóng trình soạn thảo.
Tiếp theo, trình soạn thảo sẽ mở ra để cho bạn chỉnh sửa commit message cho commit kết hợp mới. Bạn có thể sửa lại hoặc giữ nguyên commit message tùy ý.
Lưu và đóng trình soạn thảo một lần nữa.
Commit sẽ được gộp lại thành một commit duy nhất.
Sử dụng lệnh git log để kiểm tra lại lịch sử commit và đảm bảo rằng hai commit đã được gộp thành một commit duy nhất.
Sử dụng lệnhgit push --force
để đẩy commit lên remote repository nếu đã push trước đó.
Lưu ý rằng sau khi thực hiện rebase và push lại, các người khác phải chạy git pull --rebase
để cập nhật nhánh của họ với commit mới của bạn.