VieTopik
Tiếng HànTiếng AnhIT
  • Góc học tập
Tải app
  • Thư viện
  • Luyện thi
  • Cẩm nang
  • Góc học tập
Kiến trúc và chất lượng codeGit
Bài 2/17
5 phút

Branch và merge

Nội dung bài · 5 mục
  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt

Đang làm dở tính năng phí giao hàng thì có lỗi gấp cần sửa trên bản đang chạy. Nếu mọi thứ nằm chung một chỗ, code dở dang sẽ lẫn vào bản sửa lỗi. Với branch, mỗi việc nằm trên một nhánh riêng, xong việc nào thì gộp việc đó vào nhánh chính.

Khái niệm

🌿 Branch (nhánh): một dòng commit riêng tách ra từ nhánh khác, commit trên nhánh này không ảnh hưởng nhánh kia.

🤲 Merge: gộp các commit của một nhánh vào nhánh đang đứng.

Nhánh main giữ bản ổn định. Mỗi tính năng làm trên một nhánh riêng, xong và kiểm tra rồi mới merge vào main.

merge main: Bảng giá them-thuoc: Thêm Thước main: có Thước
Nhánh them-thuoc tách ra rồi gộp lại vào main

Ví dụ

Tạo một thư mục thử riêng, chạy git init -b main, rồi commit file prices.txt có hai dòng Bút bi: 5000 và Vở: 12000. Sau đó chạy:

git switch -c them-thuoc
# thêm dòng "Thước: 7000" vào cuối prices.txt
git commit -am "Thêm Thước"
git switch main
git merge them-thuoc
  • git switch -c them-thuoc tạo nhánh mới và chuyển sang nó ngay.
  • git commit -am tự add mọi file Git đang theo dõi rồi commit. File mới vẫn phải git add riêng.
  • git switch main quay về nhánh chính.
  • git merge them-thuoc gộp commit "Thêm Thước" vào main.

Kết quả của merge:

Updating ea9213a..041e7c3
Fast-forward
 prices.txt | 1 +
 1 file changed, 1 insertion(+)

Mã commit trên máy bạn sẽ khác. Từ lúc tách nhánh, main chưa có commit mới nào, nên Git chỉ cần dời main tới commit cuối của them-thuoc. Kiểu merge này gọi là fast-forward.

Thử ngay

Chạy các lệnh của ví dụ nhưng dừng sau git switch main, chưa merge. Xem nội dung file:

cat prices.txt

Đoán trước khi chạy: file có dòng "Thước: 7000" không?

Xem kết quả
Bút bi: 5000
Vở: 12000

Không có. Khi chuyển nhánh, Git đổi file trong thư mục làm việc cho đúng với nhánh đó. Dòng "Thước" chỉ có trên them-thuoc, tới khi merge mới vào main.

Lỗi hay gặp

Commit nhầm nhánh. Không để ý đang đứng ở nhánh nào, commit luôn tính năng làm dở vào main.

# SAI — không kiểm tra nhánh trước khi commit
git commit -am "Phí giao hàng làm dở"
# ĐÚNG — xem nhánh hiện tại, tạo nhánh riêng nếu cần
git branch --show-current
git switch -c phi-ship
git commit -am "Phí giao hàng làm dở"

git status cũng in tên nhánh ở dòng đầu: On branch main.

Tóm tắt

  • Mỗi việc làm trên một branch riêng, main giữ bản ổn định.
  • git switch -c ten tạo và chuyển nhánh, git switch ten chuyển nhánh.
  • git merge ten gộp nhánh ten vào nhánh đang đứng.
  • Chuyển nhánh thì file trong thư mục đổi theo nhánh đó.

Tự kiểm tra

0/3 câu
Câu 1

Đang ở main, chạy git merge phi-ship. Commit của nhánh nào được gộp vào nhánh nào?

Câu 2

Merge báo "Fast-forward". Điều đó nghĩa là gì?

Câu 3

Lệnh nào tạo nhánh fix-gia và chuyển sang nó ngay?

Commit và lịch sửXử lý conflict

Nội dung bài

  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt