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.
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ộpHì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- Mở tệp, tìm các dấu
<<<<<<<. - Giữ nội dung đúng (hoặc kết hợp cả hai) và xóa các dòng dấu.
git add teprồigit 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
- Tạo nhánh, thêm tệp, commit, gộp về main.
- Cố tình tạo xung đột rồi giải quyết.
- 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 -ctạo,mergegộp.- Xung đột giải quyết bằng cách sửa tệp rồi commit.