Tong Hoang Vu
Tong Hoang Vu's blog

Tong Hoang Vu's blog

Chia branch trong Git

Chia branch trong Git

Bài 3 trong series Git cơ bản

Tong Hoang Vu's photo
Tong Hoang Vu
·Jun 25, 2021·

3 min read

Subscribe to my newsletter and never miss my upcoming articles

Hai bài trước chúng ta đã biết được cách cài đặt git cũng như khái niệm repository. Và trong bài viết này mình sẽ tiếp tục trình bày về branch - một phần khá quan trọng khi tìm hiểu Git.

Okay cùng bắt đầu thôi.

1. Branch là gì?

Branch (nhánh) dùng để chia luồng làm việc với source code. Mỗi branch là một version của source code, thực hiện một chức năng cụ thể nào đó.

Một repository sẽ có nhiều branch, mỗi branch có chức năng cụ thể:

  • Branch main hoặc master chứa version ổn định nhất của source code. Branch này được tự động tạo lần đầu khi commit.
  • Branch dev chứa source code có các tính năng cơ bản hoàn thành, nhưng có thể còn lỗi tiềm ẩn
  • Branch feature-x chứa source của tính năng x còn đang làm dang dở, chưa hoàn thành. Khi xong rồi sẽ được gộp vào branch main.

feature-branch-with-develop-git-workflow-2.png

Có thể tưởng tượng repository như một cái cây. Gốc cây là branch main, từ đó chia ra những nhánh (branch) nhỏ hơn. Như hình trên thấy được mỗi nhánh chia ra là một branch.

2. Chia branch có lợi ích gì

Mục đích việc chia branch là giúp tách biệt rõ quá trình làm việc. Mỗi thời điểm chỉ làm việc trên một branch, nghĩa là một tính năng.

Khi chuyển qua lại giữa các branch thì toàn bộ source code sẽ thay đổi theo tương ứng. Do đó khi branch này thay đổi thì những branch khác không ảnh hưởng.

Lợi ích nữa khi chia branch là tăng khả năng teamwork. Cũng như trên, team nhiều người sẽ chia công việc trên các branch khác nhau, giảm khả năng bị xung đột hoặc chồng chéo commit (commit người này xen kẽ commit người kia).

Ví dụ anh A code được các commit A1, A2, A3, anh B thì là B1, B2. Nếu không chia branch (làm chung một branch) thì thứ tự commit có thể là A1, B1, B2, A2, A3. Tuy nhiên nếu hai anh A, B làm trên hai branch khác nhau, thì khi gộp lại sẽ liền mạch A1, A2, A3, B1, B2.

3. Tương tác giữa các branch

main-qimg-b37882935803f2af6051b029c17ac34b.webp

Có 3 hành động chính:

  • Tách branch mới từ vị trí nào đó (new branch)
  • Gộp branch nhánh vào gốc (merge)
  • Chuyển qua lại giữa các branch

Thực tế sẽ phát sinh nhiều hành động hơn giữa các branch, như:

  • Update branch gốc vào branch hiện tại (pull hoặc rebase)
  • Pick một commit từ branch này qua branch khác (cherry-pick)
  • Xóa branch (delete)

Phần này các bạn chỉ cần hiểu là được, không cần ghi nhớ. Do phần branch này mô tả bằng nhánh cây thì sẽ không thể hiện được hết sự tương tác giữa chúng, nên mình viết rõ ra đây thôi.

4. Các lệnh xử lý branch

git branch

Xem danh sách branch. Thêm flag -r để xem remote branch hoặc -a để xem tất cả.

Branch hiện tại sẽ được đánh dấu *.

git branch new curr

Tạo branch tên new từ branch curr. Nếu bỏ qua curr thì lấy branch hiện tại.

git checkout name

Chuyển sang branch name. Dùng thêm flag -b để tạo branch mới và chuyển qua branch đó luôn.

git branch -d name

Xóa branch name. Chú ý không xóa được branch hiện tại, cần checkout qua branch khác rồi mới xóa.

Nếu branch chưa đạt trạng thái fully merged, nghĩa là còn code chưa merge vào nhánh khác, thì sẽ không xóa được. Lúc này cần confirm lại bằng flag -D thay cho -d.

git branch -m old new

Đổi tên branch old thành new.

Ngoài các lệnh git branch ra, Git còn bổ sung thêm git switch tương tự, nhưng chỉ dùng riêng cho branch.

 
Share this