Supplement · Git Engineering · 11-theory-05-history-correctness

Branching, merge và rebase correctness

Merge kết hợp snapshots theo merge base; rebase sao chép thay đổi thành commit mới.

Merge semantics

Three-way merge dùng merge base, ours và theirs; rename detection là heuristic khi diff/merge, không phải metadata lưu trong commit. Conflict-free không đồng nghĩa behavior-correct: semantic conflict có thể compile và vẫn sai.

Rebase

Rebase replay commits trên base mới, tạo IDs mới; interactive rebase cho reorder/squash/edit. Không rewrite shared history nếu chưa có policy. rebase --rebase-merges cố giữ topology nhưng vẫn cần review.

Review và integration

Fast-forward không tạo merge commit; squash merge giữ final patch nhưng bỏ individual ancestry; merge commit giữ topology. Chọn strategy theo audit/revert/bisect needs. Rerere tái dùng recorded conflict resolution nhưng phải review context.

Pro Git: Branching · git-merge · git-rebase · git-rerere
← Chương 04Chương 06 →