Cách Sử Dụng GitHub

Các tính năng GitHub, workflow cộng tác, và CI/CD automation

GitHub là nơi code của mình sống. Không chỉ lưu trữ -- nó là cách mình cộng tác, review code, theo dõi công việc, và tự động hoá deployment.

Ý tưởng lõi: GitHub là "nhà" của dự án. Code, thảo luận, issues, và automation đều nằm ở đây.

GitHub vs Git

GitGitHub
Chạy trên máy mìnhWebsite/dịch vụ cloud
Theo dõi thay đổiLưu trữ repositories
Hoạt động offlineCần internet
Công cụ command-lineGiao diện web

Dễ nhớ: Git = công cụ, GitHub = nền tảng.

Open Source

Open source nghĩa là source code công khai. Ai cũng có thể xem code, fork, đề xuất thay đổi, dùng cho dự án riêng (theo license).

Nhiều tool mình dùng là open source: NextJS, Supabase, Tailwind, Shadcn UI.

Tại sao quan trọng với mình:

  • Học được cách người khác build sản phẩm
  • Report bugs và nhận fixes
  • Đóng góp lại cho cộng đồng
  • Dựa vào community duy trì và phát triển

Pull Requests (PRs)

Pull Request là đề xuất merge thay đổi từ branch này sang branch khác. Đây là cơ chế chính để cộng tác trong team.

Vì sao dùng PRs:

  1. Code review -- teammates review trước khi merge
  2. Thảo luận -- comment trên từng dòng code cụ thể
  3. CI/CD -- tests tự động chạy trước khi merge
  4. Lịch sử -- ghi lại thay đổi gì và vì sao

Quy trình

1. Tạo branch → 2. Viết code → 3. Push → 4. Mở PR → 5. Review → 6. Merge

Viết mô tả PR tốt

## What
Thêm authentication với better-auth

## Why
Users cần đăng nhập để lưu keyword clusters

## How
- Thêm better-auth configuration
- Tạo login/signup pages
- Bảo vệ dashboard routes

## Testing
- [x] Đăng ký bằng email được
- [x] Đăng nhập được
- [x] Routes được bảo vệ redirect về login

GitHub Issues

Issues dùng để theo dõi bugs, features, và tasks.

LabelMục đích
bugCái gì đó không hoạt động
featureYêu cầu tính năng mới
enhancementCải thiện tính năng có sẵn
documentationDocs cần cập nhật

Viết issue tốt

## Mô tả
Keyword export lỗi khi có hơn 1000 keywords.

## Các bước tái hiện
1. Upload CSV với 1500 keywords
2. Chạy clustering
3. Click "Export Results"

## Kỳ vọng
File CSV tải xuống với đầy đủ keywords

## Thực tế
Lỗi: "Request too large" trong console

## Môi trường
- Browser: Chrome 120
- Ngày: 2024-01-15

GitHub Actions (CI/CD)

CI/CD = Continuous Integration / Continuous Deployment.

  • CI: Tự động test code khi push
  • CD: Tự động deploy khi tests pass
Push lên GitHub → GitHub Actions chạy → Tests pass → Deploy lên Railway
                                 Tests fail → Bị chặn, cần fix

GitHub Action cơ bản

Actions nằm trong .github/workflows/:

# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Cài dependencies
        run: bun install

      - name: Chạy tests
        run: bun test

      - name: Deploy lên Railway
        run: railway up
        env:
          RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}

Actions mình hay dùng

ActionMục đích
Type checkingBắt lỗi type trước deploy
LintingĐảm bảo code style
TestsKiểm tra chức năng
DeployPush lên Railway

Workflow Hàng Ngày

Bắt đầu

# Lấy code mới nhất
git checkout main
git pull

# Tạo feature branch
git checkout -b feature/keyword-export

# Bắt đầu code (với Claude Code)

Trong lúc làm

# Lưu tiến độ thường xuyên
git add .
git commit -m "WIP: export button layout"

# Push để backup
git push -u origin feature/keyword-export

Kết thúc

# Commit cuối
git add .
git commit -m "Complete keyword export feature"
git push

# Mở PR trên GitHub

# Sau khi review và merge, dọn dẹp
git checkout main
git pull
git branch -d feature/keyword-export

Vệ Sinh Branch

  • Xoá branch sau khi merge
  • Giữ main luôn deploy được
  • Đặt tên branch mô tả rõ ràng

Tham Khảo Nhanh

Mình muốn...Tính năng GitHub
Đề xuất thay đổiPull Request
Báo bugIssue với label bug
Yêu cầu tính năngIssue với label feature
Tự động hoá testsGitHub Actions
Xem trạng thái dự ánGitHub Projects board
Review codePR review comments

Tài Liệu Tham Khảo