[Git cơ bản] Học Git Branching: Những thao tác cơ bản ai cũng cần biết

VnnTools

Trong thế giới lập trình hiện đại, Git đã trở thành một công cụ không thể thiếu, và "branch" (nhánh) chính là một trong những khái niệm cốt lõi tạo nên sức mạnh của nó. Hiểu và thành thạo các thao tác với branch sẽ giúp bạn quản lý dự án một cách khoa học, làm việc nhóm hiệu quả và dễ dàng thử nghiệm những ý tưởng mới mà không sợ ảnh hưởng đến "mạch máu" chính của dự án.

Học Git Branching: Những thao tác cơ bản ai cũng cần biết

Bài viết này sẽ là kim chỉ nam, dẫn dắt bạn đi từ những khái niệm cơ bản nhất đến việc thực hành các thao tác thiết yếu với branch một cách tự tin.

Những thao tác cơ bản với Git Branch

Dưới đây là những lệnh bạn sẽ sử dụng hàng ngày khi làm việc với branch.

Xem danh sách các Branch

Trước khi làm bất cứ điều gì, bạn cần biết mình đang có những branch nào và đang ở đâu.

git branch

Lệnh này sẽ liệt kê tất cả các branch hiện có trong local repository của bạn. Branch bạn đang làm việc (HEAD) sẽ được đánh dấu bằng dấu hoa thị * và thường có màu xanh.

Để xem tất cả các branch, bao gồm cả những branch từ xa (remote), hãy thêm flag -a:

git branch -a

Tạo một Branch mới

Khi bạn muốn bắt đầu một công việc mới, hãy tạo một branch mới. Cú pháp rất đơn giản:

git branch <tên-branch>

Ví dụ: Tạo một branch để phát triển tính năng đăng nhập.

git branch feature/login

Lưu ý: Lệnh này chỉ tạo ra branch mới nhưng chưa chuyển bạn sang branch đó. Bạn vẫn đang ở branch hiện tại.

Chuyển đổi giữa các Branch

Để bắt đầu làm việc trên một branch mới tạo hoặc một branch đã có, bạn cần "nhảy" sang nó.

Sử dụng lệnh git checkout:

git checkout <tên-branch>

Ví dụ: Chuyển sang branch feature/login vừa tạo.

git checkout feature/login

Mẹo chuyên nghiệp: Bạn có thể gộp hai bước tạo và chuyển branch làm một với flag -b:

git checkout -b <tên-branch-mới>

Ví dụ: Tạo và chuyển ngay sang branch để sửa một lỗi giao diện.

git checkout -b hotfix/ui-bug

Trong các phiên bản Git mới hơn, lệnh git switch cũng được giới thiệu để thực hiện riêng việc chuyển branch, giúp cú pháp trở nên rõ ràng hơn:

git switch <tên-branch>

Gộp Branch (Merging)

Sau khi bạn đã hoàn thành công việc trên branch của mình (ví dụ: tính năng đã xong, lỗi đã được sửa), bước tiếp theo là tích hợp những thay đổi đó vào branch chính (thường là main hoặc develop). Quá trình này được gọi là merge.

Các bước thực hiện:

  1. Chuyển về branch đích: Đầu tiên, hãy checkout về branch mà bạn muốn nhận các thay đổi.

    git checkout main
    
  2. Thực hiện merge: Gọi lệnh git merge với tên của branch chứa thay đổi.

    git merge feature/login
    

Git sẽ cố gắng tự động gộp các thay đổi. Nếu các thay đổi trên hai branch không xung đột với nhau (tức là không cùng chỉnh sửa một dòng code), quá trình merge sẽ diễn ra suôn sẻ.

Xử lý xung đột (Merge Conflict): Đôi khi, Git không thể tự quyết định nên giữ lại thay đổi nào khi cả hai branch cùng sửa một đoạn mã. Đây được gọi là xung đột hợp nhất (merge conflict). Lúc này, bạn cần phải can thiệp thủ công:

  • Git sẽ đánh dấu các file bị xung đột.
  • Mở các file đó lên, bạn sẽ thấy các khối mã được đánh dấu đặc biệt (<<<<<<<, =======, >>>>>>>).
  • Bạn cần quyết định sẽ giữ lại phần mã nào, hoặc kết hợp chúng lại, rồi xóa các dấu đánh dấu của Git.
  • Sau khi giải quyết xong, sử dụng git add để đánh dấu là đã giải quyết xung đột, và cuối cùng là git commit để hoàn tất việc merge.

Xóa Branch

Khi một branch đã được merge thành công và không còn cần thiết nữa, bạn nên xóa nó đi để giữ cho repository gọn gàng.

Xóa branch ở local:

git branch -d <tên-branch>

Flag -d (viết tắt của --delete) là một tùy chọn an toàn. Git sẽ chỉ cho phép bạn xóa branch nếu nó đã được merge vào branch hiện tại.

Nếu bạn chắc chắn muốn xóa một branch dù nó chưa được merge (hãy cẩn thận!), hãy dùng flag -D:

git branch -D <tên-branch-chưa-merge>

Xóa branch ở remote (ví dụ như trên GitHub):

git push origin --delete <tên-branch>

2. Quy trình làm việc mẫu (Workflow)

Hãy hình dung một quy trình làm việc phổ biến trong thực tế:

  1. Bắt đầu một ngày làm việc:

    • git checkout main (Chuyển về branch chính).
    • git pull origin main (Cập nhật phiên bản mới nhất từ remote).
  2. Bắt đầu một nhiệm vụ mới (ví dụ: tính năng X):

    • git checkout -b feature/X (Tạo và chuyển sang branch mới).
  3. Làm việc và commit:

    • Viết code, thay đổi file...
    • git add .
    • git commit -m "Thêm tính năng X phần 1"
    • (Lặp lại quá trình này nhiều lần).
  4. Hoàn thành và gộp lại:

    • git checkout main (Quay về branch chính).
    • git pull origin main (Đảm bảo branch chính của bạn là mới nhất).
    • git merge feature/X (Gộp các thay đổi từ branch tính năng).
    • (Nếu có conflict, hãy giải quyết nó).
  5. Đẩy lên remote và dọn dẹp:

    • git push origin main (Đẩy branch chính đã được cập nhật lên server).
    • git branch -d feature/X (Xóa branch local không còn dùng).
    • git push origin --delete feature/X (Xóa branch remote).

Nắm vững quy trình này sẽ giúp bạn làm việc một cách chuyên nghiệp và hiệu quả. Chúc bạn thành công trên con đường chinh phục Git!

Bài viết liên quan

[Git cơ bản] Cài đặt Git và Cấu hình ban đầu: Những điều bạn cần biết

Bắt đầu với Git chưa bao giờ dễ dàng đến thế! Hướng dẫn chi tiết cách cài đặt và cấu hình Git ban đầu, giúp bạn thiết lập môi trường làm việc hiệu quả chỉ trong vài phút.

[Git cơ bản] Hiểu đúng về vòng đời file trong Git: 3 trạng thái bạn cần biết

Vòng đời của một file trong Git không hề phức tạp như bạn nghĩ. Bài viết này sẽ giúp bạn nắm vững 3 trạng thái chính và cách chúng hoạt động để quản lý source code hiệu quả hơn.

[Git cơ bản] Git Branch là gì? Hiểu rõ và làm chủ phân nhánh trong Git

Branch là một tính năng quan trọng giúp chia nhỏ dự án trong Git. Đọc bài viết để hiểu rõ về Git Branch, cách tạo, xóa, và chuyển đổi giữa các nhánh một cách dễ dàng.

[Git cơ bản] Remote Repository là gì? Tất tần tật kiến thức cần biết

Remote repository đóng vai trò gì trong Git? Tìm hiểu sự khác biệt cốt lõi giữa kho lưu trữ từ xa và kho lưu trữ cục bộ. Nắm vững kiến thức để quản lý code chuyên nghiệp hơn.