Branch và merge
Nội dung bài · 5 mục
- 1.Khái niệm
- 2.Ví dụ
- 3.Thử ngay
- 4.Lỗi hay gặp
- 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.
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-thuocgit switch -c them-thuoctạo nhánh mới và chuyển sang nó ngay.git commit -amtựaddmọi file Git đang theo dõi rồi commit. File mới vẫn phảigit addriêng.git switch mainquay về nhánh chính.git merge them-thuocgộp commit "Thêm Thước" vàomain.
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ở: 12000Khô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,
maingiữ bản ổn định. git switch -c tentạo và chuyển nhánh,git switch tenchuyển nhánh.git merge tengộp nhánhtenvà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Đang ở main, chạy git merge phi-ship. Commit của nhánh nào được gộp vào nhánh nào?
Merge báo "Fast-forward". Điều đó nghĩa là gì?
Lệnh nào tạo nhánh fix-gia và chuyển sang nó ngay?