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:
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.
git add . git commit -m "Initial commit on big feature update"
Bạn làm việc bình thường trên feature-big-update.
Chuyển về lại main:
Kéo mới nhất (tránh conflict nếu team làm việc chung):
Gộp nhánh:
git merge feature-big-update
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:
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
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
Đả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.
Commit và push code của bạn lên remote:
Đảm bảo rằng tất cả thay đổi đã được commit:
Checkout về main và kéo latest code:
Sau khi push xong, bạn có thể checkout về nhánh main:
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):
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.
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 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:
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):
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?
ssh your_user@your_production_ip cd /path/to/your/project
git checkout main
Nếu chưa tồn tại main, bạn cần git fetch origin main trước rồi mới checkout.
git pull origin main
Nếu dùng CI/CD (như GitHub Actions, GitLab CI, Jenkins...), thì bước này có thể tự động, nhưng vẫn cần đảm bảo branch main đã được deploy.