GIT

Để sử dụng Git một cách chuẩn trong một dự án thực tế tại công ty, bạn cần tuân thủ quy trình làm việc (workflow) rõ ràng, đảm bảo tính nhất quán, dễ quản lý và tránh xung đột. Dưới đây là hướng dẫn chi tiết:


1. Cấu hình Git ban đầu

  • Khởi tạo Git: Nếu dự án chưa có repository, tạo mới với lệnh:

    git init

    Hoặc clone từ remote repository:

    git clone <repository-url>
  • Cấu hình thông tin cá nhân:

    git config --global user.name "Tên của bạn"
    git config --global user.email "email@congty.com"
  • Kiểm tra cấu hình:

    git config --list

2. Quy trình làm việc với Git (Git Workflow)

Trong công ty, thường sử dụng mô hình Gitflow hoặc Trunk-based development. Dưới đây là cách áp dụng Gitflow (phổ biến nhất):

a. Cấu trúc branch

  • main: Branch chính, chứa mã ổn định đã được kiểm tra và sẵn sàng deploy.

  • develop: Branch tích hợp các tính năng mới, dùng để kiểm tra trước khi merge vào main.

  • feature/: Branch cho từng tính năng cụ thể, ví dụ: feature/login-system.

  • bugfix/: Branch sửa lỗi, ví dụ: bugfix/fix-login-error.

  • hotfix/: Branch sửa lỗi khẩn cấp trên main, ví dụ: hotfix/critical-bug.

  • release/: Branch chuẩn bị phát hành, ví dụ: release/v1.0.0.

b. Quy trình làm việc

  1. Tạo branch mới cho tính năng hoặc lỗi:

    git checkout develop
    git checkout -b feature/<ten-tinh-nang>
  2. Làm việc trên branch:

    • Thực hiện các thay đổi mã nguồn.

    • Commit thường xuyên với thông điệp rõ ràng:

      git add .
      git commit -m "Mô tả ngắn gọn và rõ ràng về thay đổi"

      Ví dụ: git commit -m "Add user authentication for login page"

  3. Cập nhật branch từ develop (để tránh xung đột):

    git checkout develop
    git pull origin develop
    git checkout feature/<ten-tinh-nang>
    git merge develop

    Giải quyết xung đột nếu có.

  4. Push branch lên remote:

    git push origin feature/<ten-tinh-nang>
  5. Tạo Pull Request (PR)/Merge Request:

    • Truy cập giao diện GitHub/GitLab/Bitbucket, tạo PR từ feature/<ten-tinh-nang> sang develop.

    • Điền mô tả chi tiết về thay đổi, mục đích, và các kiểm tra đã thực hiện.

    • Gán reviewer để kiểm tra mã.

  6. Review và Merge:

    • Đồng nghiệp sẽ review PR, đưa ra phản hồi.

    • Nếu cần sửa đổi, commit thêm vào branch:

      git add .
      git commit -m "Fix review comments"
      git push origin feature/<ten-tinh-nang>
    • Sau khi được duyệt, merge PR vào develop.

  7. Xóa branch (sau khi merge):

    git push origin --delete feature/<ten-tinh-nang>
    git branch -d feature/<ten-tinh-nang>

c. Deploy và Release

  • Khi đủ tính năng trên develop, tạo branch release:

    git checkout develop
    git checkout -b release/v1.0.0
  • Thực hiện kiểm tra cuối (unit test, integration test), sửa lỗi nhỏ nếu cần.

  • Merge release vào maindevelop:

    git checkout main
    git merge release/v1.0.0
    git checkout develop
    git merge release/v1.0.0
  • Tag phiên bản:

    git tag v1.0.0
    git push origin v1.0.0
  • Push lên remote:

    git push origin main
    git push origin develop

3. Nguyên tắc đặt tên và viết commit

  • Tên branch: Ngắn gọn, mô tả rõ ràng, theo định dạng type/<mo-ta>. Ví dụ:

    • feature/add-payment-gateway

    • bugfix/fix-header-ui

  • Thông điệp commit:

    • Ngắn gọn, rõ ràng, sử dụng động từ ở thì hiện tại (add, fix, update, remove).

    • Ví dụ:

      • Add user login validation

      • Fix broken API endpoint

    • Nếu cần chi tiết, thêm mô tả sau dòng đầu:

      git commit -m "Add user login validation
      - Implement JWT token generation
      - Add input validation for email and password"
  • Ngôn ngữ: Thống nhất sử dụng tiếng Anh hoặc tiếng Việt tùy quy định công ty.


4. Các công cụ hỗ trợ

  • Nền tảng quản lý Git: GitHub, GitLab, Bitbucket.

  • CI/CD: Tích hợp pipeline để tự động test và deploy (GitHub Actions, GitLab CI, Jenkins).

  • Công cụ review code: Sử dụng tính năng review của GitHub/GitLab, hoặc SonarQube để kiểm tra chất lượng mã.

  • Công cụ quản lý dự án: Jira, Trello để gắn ticket với PR.


5. Những lưu ý quan trọng

  • Pull thường xuyên: Cập nhật branch develop hoặc main để tránh xung đột.

  • Không commit trực tiếp lên main hoặc develop: Luôn làm việc trên branch riêng.

  • Kiểm tra trước khi push:

    • Chạy test (npm test, pytest, v.v.).

    • Đảm bảo mã theo chuẩn code (ESLint, Prettier).

  • Backup trước khi rebase hoặc merge lớn:

    git branch backup-<ten-branch>
  • Xử lý xung đột: Khi merge/rebase, đọc kỹ thông báo và giải quyết xung đột thủ công.

  • Bảo mật:

    • Không commit thông tin nhạy cảm (API key, mật khẩu).

    • Sử dụng .gitignore để bỏ qua các file không cần thiết (.env, node_modules, v.v.).


6. Ví dụ quy trình thực tế

Giả sử bạn được giao task "Thêm chức năng đăng nhập":

  1. Checkout branch develop và pull mã mới nhất:

    git checkout develop
    git pull origin develop
  2. Tạo branch mới:

    git checkout -b feature/user-login
  3. Code chức năng đăng nhập, commit thay đổi:

    git add .
    git commit -m "Add user login with JWT"
  4. Push branch và tạo PR:

    git push origin feature/user-login
    • Truy cập GitHub/GitLab, tạo PR vào develop.

    • Gán reviewer, thêm mô tả: "Đã thêm đăng nhập với JWT, kiểm tra email/password, cần review API."

  5. Sau khi được duyệt, merge PR và xóa branch:

    git push origin --delete feature/user-login

7. Mẹo nâng cao

  • Sử dụng rebase để giữ lịch sử commit sạch sẽ:

    git rebase develop
  • Tuy nhiên, cẩn thận khi rebase branch đã push.

  • Cherry-pick để lấy commit cụ thể:

    git cherry-pick <commit-hash>
  • Squash commit trước khi merge để gọn gàng:

    git rebase -i <commit-hash>
  • Tự động hóa: Sử dụng pre-commit hook để kiểm tra mã trước khi commit.


8. Tài liệu tham khảo


Last updated