Skip to content

Commit và Push Tất Cả

⚠️ CẢNH BÁO: Stage TẤT CẢ thay đổi, commit, và push đến remote. Chỉ sử dụng khi tin rằng tất cả thay đổi thuộc về nhau.

Quy Trình

1. Phân Tích Thay Đổi

Chạy song song:

  • git status - Hiển thị các file đã được sửa/thêm/xóa/chưa được theo dõi
  • git diff --stat - Hiển thị thống kê thay đổi
  • git log -1 --oneline - Hiển thị commit gần đây cho kiểu thông điệp

2. Kiểm Tra An Toàn

❌ DỪNG LẠI và CẢNH BÁO nếu phát hiện:

  • Bí mật: .env*, *.key, *.pem, credentials.json, secrets.yaml, id_rsa, *.p12, *.pfx, *.cer
  • API Keys: Bất kỳ biến *_API_KEY, *_SECRET, *_TOKEN nào có giá trị thực (không phải placeholder như your-api-key, xxx, placeholder)
  • Files lớn: >10MB mà không có Git LFS
  • Build artifacts: node_modules/, dist/, build/, __pycache__/, *.pyc, .venv/
  • Files tạm: .DS_Store, thumbs.db, *.swp, *.tmp

Xác Thực API Key: Kiểm tra các file đã sửa đổi cho các mẫu như:

bash
OPENAI_API_KEY=sk-proj-xxxxx  # ❌ Phát hiện khóa thật!
AWS_SECRET_KEY=AKIA...         # ❌ Phát hiện khóa thật!
STRIPE_API_KEY=sk_live_...    # ❌ Phát hiện khóa thật!

# ✅ Placeholder chấp nhận được:
API_KEY=your-api-key-here
SECRET_KEY=placeholder
TOKEN=xxx
API_KEY=<your-key>
SECRET=${YOUR_SECRET}

✅ Xác minh:

  • .gitignore được cấu hình đúng
  • Không có xung đột merge
  • Nhánh đúng (cảnh báo nếu main/master)
  • API keys chỉ là placeholder

3. Yêu Cầu Xác Nhận

Trình bày tóm tắt:

📊 Tóm Tắt Thay Đổi:
- X file đã sửa, Y thêm, Z xóa
- Tổng: +AAA chèn, -BBB xóa

🔒 An toàn: ✅ Không có bí mật | ✅ Không có file lớn | ⚠️ [cảnh báo]
🌿 Nhánh: [name] → origin/[name]

Tôi sẽ: git add . → commit → push

Gõ 'yes' để tiếp tục hoặc 'no' để hủy.

CHỜ "yes" rõ ràng trước khi tiếp tục.

4. Thực Thi (Sau Khi Xác Nhận)

Chạy tuần tự:

bash
git add .
git status  # Xác minh staging

5. Tạo Thông Điệp Commit

Phân tích các thay đổi và tạo commit theo quy ước:

Định dạng:

[type]: Tóm tắt ngắn (tối đa 72 ký tự)

- Thay đổi chính 1
- Thay đổi chính 2
- Thay đổi chính 3

Các loại: feat, fix, docs, style, refactor, test, chore, perf, build, ci

Ví dụ:

docs: Cập nhật các file README concept với tài liệu toàn diện

- Thêm sơ đồ kiến trúc và bảng
- Bao gồm các ví dụ thực tế
- Mở rộng các phần thực hành tốt nhất

6. Commit và Push

bash
git commit -m "$(cat <<'EOF'
[Thông điệp commit được tạo]
EOF
)"
git push  # Nếu thất bại: git pull --rebase && git push
git log -1 --oneline --decorate  # Xác minh

7. Xác Nhận Thành Công

✅ Đã push thành công đến remote!

Commit: [hash] [message]
Nhánh: [branch] → origin/[branch]
Files đã thay đổi: X (+chèn, -xóa)

Xử Lý Lỗi

  • git add thất bại: Kiểm tra quyền, files bị khóa, xác minh repo được khởi tạo
  • git commit thất bại: Sửa các pre-commit hooks, kiểm tra cấu hình git (user.name/email)
  • git push thất bại:
    • Non-fast-forward: git pull --rebase && git push
    • Không có nhánh remote: git push -u origin [branch]
    • Nhánh được bảo vệ: Sử dụng workflow PR thay thế

Khi Nào Sử Dụng

Tốt:

  • Các cập nhật tài liệu đa file
  • Tính năng với tests và docs
  • Sửa lỗi trên nhiều file
  • Định dạng/refactoring toàn dự án
  • Thay đổi cấu hình

Tránh:

  • Không chắc những gì đang được commit
  • Chứa bí mật/dữ liệu nhạy cảm
  • Các nhánh được bảo vệ mà không có review
  • Có xung đột merge
  • Muốn lịch sử commit chi tiết
  • Pre-commit hooks đang thất bại

Các Giải Pháp Thay Thế

Nếu người dùng muốn kiểm soát, đề xuất:

  1. Staging có chọn lọc: Review/stage các file cụ thể
  2. Staging tương tác: git add -p để chọn patch
  3. Workflow PR: Tạo nhánh → push → PR (sử dụng lệnh /pr)

⚠️ Nhớ: Luôn review các thay đổi trước khi push. Khi nghi ngờ, sử dụng các lệnh git riêng lẻ để kiểm soát nhiều hơn.