Sử dụng git rebase -i để gộp nhiều commit thành một commit duy nhất, giúp lịch sử commit trở nên gọn gàng và dễ theo dõi.
Quy trình bao gồm kiểm tra lịch sử commit, chạy rebase tương tác, chỉnh sửa commit để gộp, cập nhật thông điệp mới và xử lý khi đã push lên remote.
Kiểm tra các commit cần gộp
Đầu tiên, xem danh sách commit hiện tại để xác định những commit cần gộp:
git log --oneline
Kết quả sẽ hiển thị các commit với mã hash và thông điệp ngắn gọn.
Tiến hành gộp commit
Chạy lệnh rebase tương tác với N là số lượng commit bạn muốn chỉnh sửa (tính từ HEAD):
git rebase -i HEAD~N
Ví dụ: git rebase -i HEAD~3 để gộp 3 commit gần nhất.
Chỉnh sửa commit trong giao diện rebase
Giao diện hiện ra sẽ liệt kê các commit. Giữ từ khóa pick cho commit đầu tiên, thay các pick còn lại bằng squash (hoặc s) để gộp vào commit chính:
pick a1b2c3d commit no 1
s d4e5f6g commit no 2
s 7h8i9j0 commit no 3
Nhấn i để chỉnh sửa, sau khi xong nhấn Esc, rồi gõ :wq để lưu và thoát.
Cập nhật thông điệp commit
Git sẽ mở giao diện để bạn chỉnh sửa thông điệp cho commit đã gộp. Xóa hoặc thêm # trước các dòng cũ nếu không cần, rồi viết thông điệp mới, ví dụ:
# This is a combination of 3 commits.
# This is the 1st commit message:
commit no 1 2 3
# This is the commit message #2:
#commit no 2
# This is the commit message #3:
#commit no 3
Lưu lại bằng :wq.
Kiểm tra lại lịch sử commit
Xem kết quả sau khi gộp:
git log --oneline
Bạn sẽ thấy chỉ còn một commit duy nhất với thông điệp mới.
Cập nhật code lên remote
Nếu nhánh đã được push lên remote trước đó, dùng lệnh sau để cập nhật:
git push --force
Lưu ý: Chỉ dùng --force khi bạn chắc chắn không ai khác làm việc trên nhánh này.