Branch trong Git là gì và vì sao nó rẻ?
Đáp án mẫu
Branch là một con trỏ có thể di chuyển, trỏ tới một commit. Trong repository nó chỉ là một file nhỏ như .git/refs/heads/main chứa hash commit dài 40 ký tự. Tạo branch chỉ là ghi file đó; không có file nào của project bị sao chép.
Khi bạn commit trên một branch, Git tạo commit mới và dời con trỏ lên phía trước. HEAD cho Git biết branch nào đang là hiện tại.
git branch feature/login # create
git switch feature/login # move HEAD to it
git switch -c feature/search # create and switch
Vì branch gần như không tốn gì, quy trình thông thường là tạo một branch cho mỗi task hoặc bản sửa, làm việc tách biệt rồi merge lại qua pull request. Tạo và chuyển branch chỉ mất vài mili giây kể cả với repo lớn.
Branch chỉ là một nhãn; xóa branch không xóa commit, miễn là còn ref khác trỏ tới chúng.
Điều cần nhớ: cứ tạo branch thoải mái, mỗi branch cho một việc.
Ý chính
- Branch là con trỏ tới một commit
- Được lưu thành một file nhỏ chứa hash
- Không có file nào bị sao chép khi tạo branch
- Mỗi task một branch là quy trình thông thường
Câu hỏi nối tiếp thường gặp
- Chuyện gì xảy ra với commit khi bạn xóa branch?
- Branch và tag khác nhau thế nào?
Lỗi thường gặp
- Nghĩ rằng branch là bản sao đầy đủ của project
- Tránh dùng branch vì nghĩ chúng nặng