Khoá học đang trong giai đoạn preview

Nhập mật khẩu để truy cập nội dung khoá học.

Trung cấp Bài 6/7 · 25 phút đọc

Save game — Git & GitHub

Mục tiêu

Biết cách “lưu game” cho code bằng Git. Khi AI sửa lỗi làm hỏng app, biết cách quay ngược thời gian về bản chạy tốt.

Sau bài này, bạn sẽ:

  • ✅ Sử dụng được 3 lệnh Git cơ bản (add, commit, push)
  • ✅ Đẩy code lên GitHub để backup an toàn
  • ✅ Biết cách quay lại phiên bản cũ khi AI sửa hỏng app

Nội dung chính

6.1 — Horror Story: Khi không có Git

Bạn code 3 ngày. App chạy ngon. Nhờ AI thêm 1 tính năng nhỏ. AI sửa 5 file cùng lúc. App sập hoàn toàn. Bạn không nhớ trước đó code như thế nào. 3 ngày công sức… bay mất.

Git là hệ thống “save game” cho code. Mỗi lần save (commit) là 1 checkpoint. Bất cứ lúc nào bạn cũng quay lại checkpoint trước đó.

Mẹo: Quy tắc vàng — Commit TRƯỚC khi nhờ AI làm gì lớn. Nếu AI sửa hỏng, bạn chỉ cần 1 lệnh để quay lại bản chạy tốt. Không commit = không có đường quay lại.

6.2 — Ba lệnh sống còn

Bạn chỉ cần nhớ 3 lệnh. AI sẽ giúp bạn phần còn lại:

┌────────────────────────────────────────────────────────────────┐
│                    3 LỆNH GIT SỐNG CÒN                        │
│                                                                │
│  1️⃣  git add .                                                │
│     "Chọn tất cả thay đổi để chuẩn bị lưu"                   │
│     → Giống như bạn chọn file để bỏ vào USB                   │
│                                                                │
│  2️⃣  git commit -m "Mô tả thay đổi"                          │
│     "Lưu checkpoint với ghi chú"                               │
│     → Giống như bấm Save Game + đặt tên save                  │
│                                                                │
│  3️⃣  git push                                                 │
│     "Đẩy lên GitHub (cloud)"                                   │
│     → Giống như upload save game lên cloud, không mất khi      │
│       hỏng máy                                                 │
│                                                                │
│  🔄 BONUS — git revert [commit-id]                             │
│     "Quay ngược thời gian về checkpoint cũ"                    │
│     → Load save game cũ                                        │
│                                                                │
└────────────────────────────────────────────────────────────────┘

6.3 — Ví dụ thực tế: Commit workflow từng bước

Hãy xem một phiên làm việc thực tế:

--- BUỔI SÁNG ---

1. Mở Cursor, bắt đầu code tính năng "thêm sản phẩm"
2. Code xong, test OK → COMMIT:
   git add .
   git commit -m "Thêm form tạo sản phẩm mới"
   git push

--- BUỔI CHIỀU ---

3. Nhờ AI thêm tính năng "xóa sản phẩm"
4. AI sửa 3 file, test OK → COMMIT:
   git add .
   git commit -m "Thêm nút xóa sản phẩm với popup xác nhận"
   git push

5. Nhờ AI thêm tính năng "sửa sản phẩm"
6. AI sửa 4 file... APP SẬP! Lỗi tùm lum!
7. ĐỪNG HOẢNG → Quay lại bản chạy tốt:
   git revert HEAD
   → App quay lại trạng thái sau commit "xóa sản phẩm" → chạy ngon lại!

8. Nhờ AI sửa lại tính năng "sửa sản phẩm" với prompt rõ hơn
9. Lần này OK → COMMIT:
   git add .
   git commit -m "Thêm chức năng sửa sản phẩm inline"
   git push
Screenshot: Terminal hiện lịch sử commits (git log --oneline) với các checkpoint rõ ràng

6.4 — Quy tắc Save Game

✅ NÊN commit khi:
  - Vừa hoàn thành 1 tính năng và test OK
  - Trước khi nhờ AI sửa/thêm gì lớn
  - Cuối ngày làm việc

❌ KHÔNG NÊN commit khi:
  - App đang lỗi
  - Đang sửa dở giữa chừng

Mẹo: Commit message nên bắt đầu bằng động từ: “Thêm…”, “Sửa…”, “Xóa…”, “Cập nhật…”. Ví dụ: “Thêm trang đăng nhập”, “Sửa lỗi hiển thị giỏ hàng”. Như vậy sau này đọc lại sẽ biết mỗi commit làm gì.

6.5 — Đẩy code lên GitHub

Bước 1: Tạo tài khoản tại github.com

Bước 2: Tạo repository mới:

1. Bấm nút "+" ở góc trên phải → "New repository"
2. Đặt tên: my-todo-app
3. Chọn Private (nếu không muốn ai thấy) hoặc Public
4. ĐỪNG tick "Add a README" (vì project đã có code rồi)
5. Bấm "Create repository"

Bước 3: Kết nối và đẩy code (trong Terminal của Cursor):

git init
git add .
git commit -m "Phiên bản đầu tiên - App To-do với Auth + Supabase"
git branch -M main
git remote add origin https://github.com/YOUR-USERNAME/my-todo-app.git
git push -u origin main

Mẹo: Cursor có thể yêu cầu bạn đăng nhập GitHub lần đầu. Làm theo hướng dẫn trên màn hình — thường là bấm “Sign in with browser” và xác nhận trên trình duyệt.

Screenshot: GitHub repository với code đã push thành công

6.6 — Mẹo: Dùng AI viết commit message

Không biết mô tả gì? Nhờ AI:

Prompt trong Cursor Chat:
"Xem các thay đổi tôi vừa làm và viết cho tôi commit message
bằng tiếng Việt, ngắn gọn, dưới 50 ký tự."

6.7 — File .gitignore: Không đẩy file nhạy cảm

Nhớ file .env chứa API key? Bạn KHÔNG ĐƯỢC đẩy file đó lên GitHub:

Tạo file .gitignore ở thư mục gốc (nếu chưa có), thêm:

node_modules/
.env
.env.local
dist/

Những file/thư mục trong .gitignore sẽ bị Git bỏ qua, không bao giờ push lên GitHub.

Lỗi thường gặp

Vấn đề: “Push bị reject” — git push báo lỗi → Thường là vì GitHub repo có file mà local không có (ví dụ: README). Chạy git pull --rebase origin main trước, rồi git push lại. Nếu vẫn lỗi, copy dòng lỗi và hỏi AI trong Cursor Chat.

Vấn đề: “Merge conflict” — Git báo xung đột khi pull → Đừng hoảng. Mở file bị conflict (Git sẽ đánh dấu bằng <<<<<<<>>>>>>>). Hỏi AI: “File này đang bị merge conflict, giúp tôi chọn phần nào giữ lại”. Sau đó git add .git commit.

Vấn đề: “Lỡ push .env lên GitHub” — API key bị lộ → Vào Supabase → Settings → API → Regenerate API key (tạo key mới). Thêm .env vào .gitignore. Commit lại. Key cũ đã bị lộ thì phải tạo mới, không có cách nào “gỡ” được.

Vấn đề: “git init bị lỗi — command not found” → Bạn chưa cài Git. Tải tại git-scm.com. Windows: chạy installer. Mac: mở Terminal gõ git --version, hệ thống sẽ hỏi cài Xcode Command Line Tools → bấm Install.

Mẹo: Nếu bạn dùng Cursor/Windsurf, hầu hết thao tác Git có thể nhờ AI làm qua Terminal. Chỉ cần nói: “Commit tất cả thay đổi với message: Thêm tính năng XYZ” — AI sẽ gõ lệnh cho bạn.

Bài tập thực hành

Nhiệm vụ:

Bước 1 (5 phút): Tạo tài khoản github.com và cài Git (nếu chưa có)

  • Tiêu chí: chạy git --version trong Terminal thấy số phiên bản

Bước 2 (5 phút): Init Git và đẩy project lên GitHub theo hướng dẫn phần 6.5

  • Tiêu chí: vào github.com thấy code project
  • Gợi ý nếu bị stuck: kiểm tra đã tạo repo trống trên GitHub chưa (không tick “Add a README”)

Bước 3 (5 phút): Thêm 1 tính năng nhỏ (ví dụ: đổi màu nút) → Commit lần 2 → Push

  • Tiêu chí: GitHub repo có ít nhất 2 commits

Bước 4 (10 phút): Nhờ AI thay đổi gì đó lớn (có thể gây lỗi) → Thực hành git revert

  • Tiêu chí: quay lại được bản chạy tốt sau khi revert
  • Gợi ý nếu bị stuck: chạy git log --oneline để xem danh sách commits, copy commit-id cần quay về

Thời gian: 25 phút Deliverable: Link GitHub repo với ít nhất 2 commits

Tổng kết bài 6

Bạn đã học đượcChi tiết
Git là gìHệ thống save game cho code
3 lệnh cơ bảnadd, commit, push
Commit workflowCommit trước khi AI sửa, commit sau khi test OK
RevertQuay ngược về bản cũ khi AI phá hỏng
GitHubCloud lưu trữ code, không mất khi hỏng máy
.gitignoreKhông push file nhạy cảm (.env) lên GitHub

Kiểm tra kiến thức

1. Ba lệnh Git cơ bản theo đúng thứ tự là gì?

2. Khi nào nên commit code?

3. File .gitignore có tác dụng gì?

4. Lệnh 'git revert HEAD' làm gì?

5. Tại sao KHÔNG được push file .env lên GitHub?

Tham gia Bình Dân AI

Hoàn toàn miễn phí. Bạn sẽ nhận được:

Vào group Zalo ngay

Miễn phí mãi mãi. Không spam. Rời group bất cứ lúc nào.