Bài 4. Nhánh và hợp nhất

Nhánh cho phép thử nghiệm tính năng riêng mà không ảnh hưởng mã đang chạy tốt. Xong thì hợp nhất.

35 phútCơ bản - Trung cấp
Bạn sẽ học được
  • Tạo, chuyển và xóa nhánh
  • Hợp nhất bằng merge
  • Giải quyết xung đột
  • Hiểu mô hình làm việc theo nhánh tính năng
Thuật ngữ cần biết
main
Nhánh chính, luôn ở trạng thái chạy được.
merge
Gộp thay đổi của một nhánh vào nhánh khác.
Xung đột (conflict)
Hai nhánh sửa cùng một chỗ, Git không tự quyết được.
Fast-forward
Hợp nhất đơn giản khi nhánh chính chưa có thay đổi mới.

Các lệnh nhánh

git branch                 # liệt kê
git switch -c tinh-nang-menu   # tạo và chuyển sang nhánh mới
# ... sửa, add, commit ...
git switch main
git merge tinh-nang-menu
git branch -d tinh-nang-menu   # xóa nhánh đã gộp

Hình dung

maintạo nhánhcommit trên nhánhmerge về main

Nhánh chỉ là một con trỏ nhẹ tới một commit, nên tạo và bỏ nhánh gần như không tốn gì.

Giải quyết xung đột

<<<<<<< HEAD
<h1>Tiêu đề từ main</h1>
=======
<h1>Tiêu đề từ nhánh</h1>
>>>>>>> tinh-nang-menu
  1. Mở tệp, tìm các dấu <<<<<<<.
  2. Giữ nội dung đúng (hoặc kết hợp cả hai) và xóa các dòng dấu.
  3. git add tep rồi git commit để hoàn tất hợp nhất.

Quy tắc đặt tên nhánh

  • tinh-nang/dang-nhap, sua-loi/tong-tien.
  • Một nhánh một mục đích, ngắn và có đời sống ngắn.
  • Cập nhật nhánh từ main thường xuyên để giảm xung đột.
Tình huống: Hai người cùng sửa một tệp

An sửa menu, Bình sửa chân trang trong cùng index.html. Mỗi người làm trên nhánh riêng; khi gộp, nếu sửa khác dòng Git tự gộp, nếu trùng dòng thì phải giải quyết xung đột thủ công như trên.

Mẹo hay

VS Code hiện nút "Accept Current / Incoming / Both" ngay tại vùng xung đột, rất tiện.

Lưu ý

Đừng làm việc trực tiếp trên main khi cả nhóm cùng dùng; hãy luôn tạo nhánh.

Thực hành
  1. Tạo nhánh, thêm tệp, commit, gộp về main.
  2. Cố tình tạo xung đột rồi giải quyết.
  3. Dùng git log --oneline --graph --all để xem lịch sử.
Tóm tắt bài học
  • Nhánh = dòng phát triển riêng, rẻ và nhanh.
  • switch -c tạo, merge gộp.
  • Xung đột giải quyết bằng cách sửa tệp rồi commit.