Cập nhật ·  

Sử dụng Git Rebase để gộp commit

Tìm hiểu cách dùng git rebase để gộp nhiều commit thành một, giữ lịch sử sạch sẽ và dễ quản lý.
Minh Lâm

Minh Lâm

@minhlam1996vn

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.