Merge, rebase, branching và incident-safe recovery
Workflow giảm integration/release risk; history aesthetics đứng sau correctness và collaboration safety.
Merge/rebase/cherry-pick
Merge tạo commit với nhiều parents và giữ topology; fast-forward chỉ move ref. Rebase replay commits lên base mới, đổi identity; không rewrite shared history tùy tiện. Cherry-pick copy patch thành commit mới, dễ duplicate ancestry.
Branching
Trunk-based dùng short-lived branches/small changes/CI/feature flags; giảm divergence nhưng cần discipline. Release branches phù hợp cadence/support lines; Git Flow tăng merge/backport cost. Chọn theo deploy frequency/team/product, không dogma.
Conflict
Conflict là three-way merge không tự quyết. Hiểu base/ours/theirs và semantic conflict dù textual merge xanh. Build/test sau resolution. Rerere có thể reuse resolution nhưng phải review.
Recovery toolkit
reflog tìm lost ref; restore files/index; reset move ref/index/tree; revert tạo inverse commit an toàn cho shared history; bisect binary search regression với reliable test. Backup branch/tag trước risky rewrite.
Reviewable changes
Commits coherent, messages why, PR nhỏ với migration/risk/evidence. Signed commits/tags có identity value nhưng không thay review/build provenance.