Sổ Tay Hướng Dẫn Git Flow
- 26 Feb, 2026
Khi mình tìm workflow để hiểu hơn về git thì thấy được bài viết trên Github đọc thấy khá hay vì rõ ràng và rành mạch luồng cho việc phát triển sản phẩm, dịnh danh, truy vết và có quy tắc, nếu hỏi có hiểu gì không thì mình chỉ hiểu ở mức luồng chạy còn để command thực tế là không vì bản thân chỉ mới đụng vào Github cách đây tầm 3 tháng. Coi như học dần vì có nhiều thứ khi triển khai thấy khá thú vị, bản thân không phải developer nên chỉ cần hiểu luồng, cấu trúc còn lại có AI lo. :D
Cụ thể bên dưới là tài liệu sổ tay viết lại cho dự án thực tế chính là trang này (tất cả các tính năng trong việc nghiên cứu tính năng, kiểm thử, fix bugs, release sẽ theo cấu trúc bên dưới). Bản thân vẫn phải cần AI hỗ trợ khi kẹt nhưng tổng thể là hiểu khung cấu trúc và những việc cần làm như lên ý tưởng, demo features, develop, release và hotfixes thì nên vận hành ra sao để khi dự án lớn hơn sẽ không bị chồng lấn các luồng với nhau.
1. Cấu Trúc Các Nhánh (Branches)
Dự án sử dụng 2 nhánh cốt lõi và các nhánh tạm thời:
- 🟢
main(Production): Vùng cấm. Luôn chứa phiên bản ổn định nhất đang chạy trên máy chủ thật. Tuyệt đối không thao tác trực tiếp. - 🔵
develop(Staging/Integration): Nhánh xương sống để gộp code. Nơi tập hợp mọi tính năng mới trước khi phát hành. Không code trực tiếp trên nhánh này. - 🟡
feature/ten-tinh-nang: Nhánh nháp để phát triển tính năng. Bắt buộc tạo ra từ nhánhdevelop. - 🔴
hotfix/ten-loi: Nhánh sửa lỗi khẩn cấp (bugs trên production). Bắt buộc tạo ra từ nhánhmain.
2. Luật Bảo Vệ Tự Động (Husky Hooks)
Hệ thống đã được cấy “cảnh sát ngầm” (Husky) dưới máy tính của bạn:
- Khóa Push Chống Phá Hoại (
pre-push): Chặn đứng mọi nỗ lực gõ lệnhgit pushhoặc ấn “Publish Branch” nếu bạn đang đứng ởmainhoặcdevelop. - Kiểm Thử Trước Khi Lưu (
pre-commit):
- Nếu bạn sửa file cấu hình hoặc Code (
.js, .jsx, .astro, .css): Husky ép chạynpm run buildngầm. Code lỗi sẽ bị cấm Commit. - Nếu bạn viết bài Blog, đổi ảnh (
.md, .json,ảnh): Husky sẽ nhận diện thông minh, tự động mở khoá cho Commit trơn tru mà không bắt Build tốn thời gian.
3. Quy Trình Thao Tác Chuẩn (Từng Bước)
Khi được giao việc làm một tính năng mới (ví dụ: Trang Login), hãy làm theo đúng trình tự sau:
Bước 1: Làm mới môi trường
Luôn luôn lấy code mới nhất trước khi làm việc:
bash
git checkout develop
git pull origin develop
Bước 2: Rẽ nhánh mới (Bắt buộc)
bash
git checkout -b feature/login-page
Bước 3: Code và Commit theo Format (Conventional Commits)
- Bắt đầu bằng:
feat:(tính năng mới),fix:(sửa lỗi),chore:(cấu hình, linh tinh),docs:(tài liệu). - Ví dụ:
feat: xay dung giao dien dang nhap
Bước 4: Đẩy nhánh này lên Github
bash
git push -u origin feature/login-page
Bước 5: Hợp nhất (Tạo Pull Request)
- Lên Github, sẽ thấy lời nhắc màu xanh lá. Bấm “Compare & pull request”.
- Cực kỳ quan trọng: Chọn ô
base(nhánh đích) làdevelop. (Đừng để nhầm làmain). - Bấm Create pull request > Bấm Merge pull request.
- Xong việc! Trở về máy tính làm lại Bước 1 để lấy thành quả về máy!
4. Mẹo Thao Tác Siêu Tốc (Dành Cho Coder Lười)
Không muốn xài chuột tạo nhánh, gõ commit, ấn push lằng nhằng? Hãy cài phím tắt siêu tốc này (Chỉ cần chạy 1 lần duy nhất trong Terminal/Git Bash):
bash
git config --global alias.save '!f() { git checkout -b "$1" && git add . && git commit -m "$2" && git push -u origin "$1"; }; f'
Cách dùng vĩnh viễn: Chỉ đúng 1 lệnh! Khi code xong, mở Terminal gõ:
bash
git save feature/ten-nhanh "feat: ghi chu file"
(Hệ thống sẽ tự rẽ nhánh, tự gói code, tự build kiểm thử, tự commit và tự đẩy lên web trong chớp mắt!)
5. Hệ Thống Đánh Phiên Bản Tự Động (Auto Versioning)
Dự án đã tích hợp công cụ biến đổi version thần thánh standard-version.
Khi nào dùng? Khi bạn đã gom được rất nhiều feature/ vào develop và muốn chốt sổ một phiên bản (ví dụ từ nâng v0.1.0 lên v0.2.0).
Cách chạy: Đứng ở nhánh develop (sau khi đã Merge hết các PR), gõ:
bash
npm run release
Hệ thống sẽ:
- Đọc lịch sử các chữ
feat:,fix: - Tự nâng Version phù hợp.
- Tự sinh file
CHANGELOG.mdđẹp mắt. - Tự đánh
git tag(ví dụv0.2.0).
Sau đó, bạn chỉ việc gõ:
bash
git push --follow-tags origin develop