Công cụ 22/09/2026 5 phút

Merge ba chiều trong Git: base, ours, theirs — và vì sao có xung đột

Nhiều người sợ merge vì không hiểu Git làm gì. Thực ra merge của Git là 'ba chiều': nó tìm commit tổ tiên chung (merge base) rồi so với hai phía để biết bên nào đã đổi gì. Bài này chứng minh bằng lệnh thật: thay đổi khác vùng tự gộp, thay đổi cùng dòng gây xung đột, và index giữ cả ba phiên bản (base/ours/theirs).

Công cụ 22/09/2026 6 phút

Rebase trong Git: vì sao nó viết lại lịch sử — chứng minh bằng SHA thật

Nhiều người dùng rebase mà không hiểu nó khác merge chỗ nào, rồi hoảng khi thấy commit 'biến mất'. Sự thật: rebase KHÔNG di chuyển commit cũ — nó tạo commit MỚI với SHA khác vì đổi parent. Bài này chứng minh bằng lệnh thật: cùng nội dung, cùng message, nhưng SHA đổi hoàn toàn; lịch sử thẳng thay vì rẽ nhánh; và commit cũ vẫn nằm trong reflog để cứu.