Cả merge và rebase đều tích hợp các thay đổi từ một branch vào một branch khác, nhưng chúng làm điều đó theo cách khác nhau: merge giữ lịch sử với một merge commit, trong khi rebase ghi đè lịch sử để tạo một chuỗi tuyến tính. Hiểu sự khác biệt và khi nào dùng cái nào là quan trọng.
Merge — giữ lịch sử (kết hợp)
main: A───B───C───────M ← M là một MERGE COMMIT (hai parent)
\ /
feature: D───E
→ git merge feature: tạo M kết hợp các branch
✓ Giữ lịch sử thực tế (cho thấy branch từng tồn tại, khi nào nó merge)
✗ Lịch sử có các merge commit (có thể trông lộn xộn với nhiều merge)
