IT nói tiếng người
Công cụMốc 2 · Đọc hiểu được

🔀 Merge là gì?

Gộp thay đổi từ nhánh này vào nhánh kia.

1
Hiểu nó là gì

Merge lấy các commit của một nhánh và đưa vào nhánh khác. Nếu hai bên cùng sửa một chỗ, Git dừng lại hỏi bạn chọn bên nào — gọi là xung đột (conflict).

Nói theo đời thường:
Hai người cùng sửa một bản kế hoạch trên hai tờ giấy. Gộp lại: phần ai sửa chỗ riêng thì giữ cả hai; chỗ cả hai cùng sửa thì phải ngồi lại thống nhất.

⚠ Chỗ ẩn dụ này hỏng

Gộp hai tờ kế hoạch — nhưng Git gộp rất giỏi khi hai người sửa hai chỗ khác nhau, và hoàn toàn bó tay khi cùng sửa một dòng.

Khi đó nó không đoán, mà dừng lại và ghi cả hai phiên bản vào file, đánh dấu bằng <<<<<<<>>>>>>>. Việc của bạn: mở file, giữ lại phần đúng, xoá mấy dòng đánh dấu, commit. Xung đột không phải tai nạn — nó là hệ quả tự nhiên của việc hai người cùng sửa một thứ.

2
Code trông thế nào
git switch main
git merge them-nut-danh-gia     # đưa các commit của nhánh kia vào main

# Nếu có xung đột, file sẽ trông thế này:
<<<<<<< HEAD
  brief: 'Gộp thay đổi từ nhánh này vào nhánh kia.'
=======
  brief: 'Trộn hai nhánh làm một.'
>>>>>>> them-nut-danh-gia
# → giữ một bên, xoá các dòng đánh dấu, rồi: git add -A && git commit

Trên thực tế bạn ít gõ git merge tay — thường bấm nút Merge trên Pull Request.

3
Khi nào bạn dùng nó

✓ Dùng khi

  • Nhánh đã xong việc, test xanh, đã có người xem
  • Cần đưa thay đổi mới của main vào nhánh đang làm dở để không lệch quá xa

✗ Đừng dùng khi

  • Gộp khi test đang đỏ — bạn đang đưa lỗi vào bản chính
  • Giải quyết xung đột bằng cách chọn bừa một bên mà không đọc
Chưa cần biết: rebase thay merge, squash merge, fast-forward, chiến lược gộp của đội.
Để dành tới Mốc 3 — Tự dựng được: Bạn tự đưa được một trang lên mạng, và biết phải sờ vào đâu khi nó không lên.
Dấu hiệu bạn đã cần học nó: Khi lịch sử main trông như mạng nhện và không ai đọc nổi thứ tự thay đổi.
4
Đi đâu tiếp

🧪 Thử 2 phút, không cần cài gì

Tạo hai nhánh từ main, trên mỗi nhánh sửa cùng một dòng thành hai câu khác nhau, commit. Gộp nhánh thứ nhất vào main (êm), rồi gộp nhánh thứ hai — bạn sẽ gặp xung đột đầu tiên trong môi trường an toàn.
← Xem tất cả thuật ngữ