Cách làm việc rẽ nhánh với Git

Rất chuẩn bài khi bạn muốn tách nhánh để làm việc độc lập rồi mới gộp vào main sau 👏. Dưới đây là các bước cơ bản để tạo nhánh mới từ main, giữ nguyên mọi thay đổi hiện tại, và làm việc an toàn:


✅ Bước 1: Tạo nhánh mới từ main

git checkout -b feature-big-update

Lệnh này sẽ tạo nhánh mới feature-big-update từ main và đồng thời chuyển sang nhánh đó luôn.


✅ Bước 2: Commit các thay đổi đang có (nếu chưa commit)

git add . git commit -m "Initial commit on big feature update"

✅ Bước 3: Tiếp tục phát triển trên nhánh mới

Bạn làm việc bình thường trên feature-big-update.


✅ Bước 4: Khi hoàn tất, muốn gộp vào main

  1. Chuyển về lại main:

     
    git checkout main
  2. Kéo mới nhất (tránh conflict nếu team làm việc chung):

     
    git pull origin main
  3. Gộp nhánh:

     
    git merge feature-big-update

✅ Bước 5 (tuỳ chọn): Xoá nhánh đã gộp nếu không cần nữa

git branch -d feature-big-update

Nếu bạn đã có thay đổi rồi mới nhớ cần tạo nhánh, đừng lo, vẫn làm được:

💡 Tình huống: đang ở main và đã có thay đổi chưa commit

Bạn có thể:

git checkout -b feature-big-update # tạo nhánh mới và giữ toàn bộ thay đổi

Nó sẽ không mất thay đổi nào, chỉ là chuyển sang nhánh mới để commit lại lịch sử cho rõ ràng.

Tiếp đó, hãy đến với mục tiếp theo là để môi trường Production chạy với nhánh mới 

Để môi trường Production (hoặc Staging) chạy với nhánh mới

Ok, mình hướng dẫn bạn từng bước nhé! Giả sử bạn đang SSH vào VPS rồi và đang trong thư mục project Git.

Bây giờ bạn muốn chuyển từ main sang feature-big-update và pull code về, thì làm như sau:


1. Check các branch hiện có từ remote để đảm bảo branch feature-big-update tồn tại:

git fetch --all git branch -r

(bạn sẽ thấy kiểu origin/feature-big-update trong danh sách nếu nó đã push lên remote)


2. Nếu branch đã tồn tại rồi thì checkout sang branch đó:

git checkout feature-big-update

Nếu trên VPS chưa từng checkout nhánh này trước đó (branch mới hoàn toàn), thì dùng:

git checkout -b feature-big-update origin/feature-big-update

Lệnh -b nghĩa là tạo local branch feature-big-update từ remote origin/feature-big-update.


3. Sau đó pull code mới nhất về:

 
git pull origin feature-big-update

Tóm lại nếu gọn thì quy trình là:

 
git fetch --all git checkout -b feature-big-update origin/feature-big-update # nếu local chưa có git pull origin feature-big-update

hoặc nếu đã có local branch thì:

 
git checkout feature-big-update git pull origin feature-big-update

Tiếp đó, khi chương trình chạy ổn cũng là lúc ta chuyển mọi thứ về Main để hợp nhất nhánh trước khi làm thêm tính năng mới, đây là điều thường thấy ở các nền tảng giao diện đồ họa của Git như github, gitlab

Các bước chuẩn bị trước khi mergecheckout về main:

  1. Đảm bảo rằng tính năng trong branch hiện tại đã hoàn thành và kiểm tra ổn:

    • Kiểm tra kỹ code trên branch feature-big-update đã sẵn sàng để merge.

    • Nếu cần, có thể chạy lại các test case hoặc kiểm tra chức năng liên quan.

  2. Commit và push code của bạn lên remote:

    • Đảm bảo rằng tất cả thay đổi đã được commit:

       
      git add . git commit -m "Hoàn thành tính năng lớn" git push origin feature-big-update
  3. Checkout về main và kéo latest code:

    • Sau khi push xong, bạn có thể checkout về nhánh main:

       
      git checkout main
  4. Pull latest từ remote để đảm bảo không bị trễ (nếu có người khác đã làm việc trên main):

     
    git pull origin main
  5. Merge nhánh feature-big-update vào main:

    • Thực hiện merge nhánh tính năng vào nhánh main:

       
      git merge feature-big-update

    Nếu có conflict, bạn cần giải quyết và commit lại.

  6. Push merge về remote: Sau khi merge thành công và kiểm tra, push lại lên remote:

     
    git push origin main

Nếu muốn reset về remote:

Nếu bạn muốn reset nhánh main trên VPS để đồng bộ lại với remote (tránh tình trạng bị lộn xộn hoặc code cũ), bạn có thể làm như sau:

  1. Reset local main để giống với remote (nếu có sự khác biệt và bạn muốn bỏ qua tất cả các thay đổi local):

     
    git checkout main git fetch origin git reset --hard origin/main
  2. Sau đó bạn có thể checkout lại nhánh tính năng mới để tiếp tục làm việc:

     
    git checkout -b feature-new-feature

Chắc bạn đã hiểu cách làm rồi đúng không? Cần mình hỗ trợ thêm gì nữa không, ví dụ như quản lý merge conflict hoặc cách viết rebase cho sạch code?

Bình luận cho Nam qua zalo nhé!