Vibe Code
Giáo trình/Phần 2 — Nền móng Git & GitHub

Bảy lệnh Git đủ sống

Git tối thiểu cho người làm Vibe Code. Không nhánh phức tạp, không rebase — chỉ bảy lệnh và một phản xạ cứu mạng.

Cấp 225 phút làm

Git là thứ khiến bạn không bao giờ mất việc đã làm và lùi lại được khi AI phá. Với Vibe Code, nó cần hơn với người viết tay, vì AI sửa nhiều dòng một lúc.

Bài này cố tình chỉ dạy 7 lệnh. Git có hơn 150; bạn dùng 7 cái cho 95% việc.

Mô hình trong đầu: ba khu

[Thư mục làm việc]  →  [Khu chờ]  →  [Lịch sử]  →  [GitHub]
   bạn sửa file        git add      git commit     git push
  • Thư mục làm việc: file thật, bạn và AI đang sửa.
  • Khu chờ (staging): những thay đổi bạn chọn để chốt.
  • Lịch sử (local): các mốc đã chốt, nằm trong máy bạn.
  • GitHub: bản sao trên mạng, để không mất và để chia sẻ.

Hiểu 4 khu này thì mọi lệnh sau đều có nghĩa.

Bảy lệnh

1. git init — bắt đầu theo dõi (một lần cho mỗi project)

cd C:\NVAI\Claude\web-dau-tien
git init

Sinh ra thư mục ẩn .git. Từ giờ Git nhớ mọi thay đổi.

2. git status — lệnh bạn gõ nhiều nhất

git status

Trả lời: file nào đã sửa, file nào trong khu chờ, đang ở nhánh nào. Gõ nó trước và sau mỗi lệnh khác, ít nhất trong hai tuần đầu. Nó là cái đèn trong phòng tối.

3. git add — đưa vào khu chờ

git add .            # mọi thay đổi
git add index.html   # chỉ một file

4. git commit — chốt một mốc

git commit -m "Them bo loc theo thang cho bang don hang"

Lời nhắn là thứ bạn ba tháng sau sẽ đọc. Quy ước dùng trong giáo trình này:

  • Viết tiếng Việt không dấu — tránh hẳn chuyện bảng mã trên dòng lệnh Windows (xem bẫy dấu tiếng Việt).
  • Nói việc, không nói file: "Them bo loc thang" tốt hơn "Sua index.html".
  • Một việc một commit. Đừng gộp "thêm bộ lọc + đổi màu + sửa lỗi lưu" vào một mốc — hỏng thì không lùi riêng được.

5. git log — xem lịch sử

git log --oneline -10

Ra danh sách kiểu:

a3f91c2 Them bo loc theo thang cho bang don hang
7b2e105 Sua loi khong luu duoc khi ten co dau
e91d4a8 Dung trang gioi thieu dau tien

Dãy chữ đầu là mã mốc. Bạn cần nó cho lệnh thứ 6.

6. git checkout / git restore — lệnh cứu mạng

Đây là lệnh đáng giá nhất bài. AI vừa sửa và làm vỡ hết? Hai chữ:

git restore .

Mọi thay đổi chưa commit bị bỏ, file về đúng như mốc gần nhất. Việc 20 phút của AI biến mất — và đó chính là cái bạn muốn.

Muốn xem lại cả project ở một mốc cũ:

git checkout 7b2e105     # xem trạng thái tại mốc đó
git checkout main        # quay về hiện tại
Phản xạ cần luyện thành tự độngchuyên gia thực thi

Trước khi nhờ AI làm một việc lớn:

git add . ; git commit -m "Moc truoc khi them tinh nang bao cao"

Sau khi nó làm, nếu kết quả tệ:

git restore .

Hai dòng này là toàn bộ "lưới an toàn" của Vibe Code. Ai làm được phản xạ này thì không bao giờ mất quá 20 phút công sức, bất kể AI sai cỡ nào. Ai không làm thì sẽ có một buổi chiều rất buồn — thường là vào tuần thứ ba.

7. git push — đẩy lên GitHub

Lệnh này cần repo trên GitHub trước — bài sau làm việc đó.

git push

Xem AI vừa sửa gì: git diff

Lệnh thứ tám, nhưng quan trọng ngang bảy lệnh trên khi làm Vibe Code:

git diff              # thay đổi chưa vào khu chờ
git diff --stat       # chỉ xem bao nhiêu dòng, ở file nào

Dùng nó sau mỗi lượt AI sửa. Đọc git diff --stat mất 5 giây và phát hiện ngay chuyện bất thường:

 index.html | 412 ++++++++++++++---------------------

412 dòng đổi cho một yêu cầu "thêm nút xuất Excel"? Nó vừa viết lại cả file. Đừng commit — git restore . và ra đề lại kèm câu "chỉ sửa phần cần sửa".

Số dòng thay đổi là chỉ số chất lượng rẻ nhất mà cóchuyên gia insight & case thực tế

Tôi dùng git diff --stat như một cái cân. Quy luật đúc từ thực tế:

Yêu cầu Số dòng hợp lý Quá số này là đáng ngờ
Sửa chữ, sửa màu 1–5 > 20
Thêm một nút có hành vi 10–40 > 100
Thêm một màn hình 80–250 > 500
Sửa một lỗi 1–15 > 50

Dòng cuối là dòng quan trọng nhất: một bản sửa lỗi 200 dòng gần như luôn là một bản tái cấu trúc đội lốt sửa lỗi — và nó mang theo lỗi mới. Khi thấy vậy, tôi bỏ và yêu cầu lại: "Sửa đúng nguyên nhân, nhỏ nhất có thể, không dọn dẹp gì thêm."

.gitignore — thứ không bao giờ đưa vào Git

Tạo file tên .gitignore ở gốc project:

node_modules/
.wrangler/
dist/
.dev.vars
.env
*.log
.DS_Store
Thumbs.db

Giải thích ba dòng quan trọng:

  • node_modules/ — thư viện tải về, hàng chục nghìn file, cài lại được bằng một lệnh. Đưa vào Git là làm repo phình lên vô ích.
  • .dev.vars và .env — chứa mật khẩu, khóa API. Đưa lên GitHub là rò rỉ thật. Xem Bí mật và token.
  • dist/ — thư mục sinh ra từ build; sinh lại được.
Lỡ commit file bí mật rồi thì xóa file không đủ

Git lưu lịch sử. Bạn xóa .env và commit tiếp, nội dung cũ vẫn nằm trong lịch sử, ai cũng đọc được bằng git log -p.

Việc đúng phải làm, theo thứ tự này: 1. Thu hồi và đổi ngay cái khóa đó ở nơi phát hành (Cloudflare, Anthropic...). Đây là bước duy nhất thật sự cần thiết. 2. Thêm vào .gitignore. 3. Xóa khỏi lịch sử nếu repo công khai (git filter-repo) — nhưng đừng coi đây là cách sửa: khóa cũ phải xem như đã mất.

Thứ tự này quan trọng: nhiều người dồn hết công sức vào bước 3 và quên bước 1.

Cái làm tôi thấy Git không đáng sợngười dùng bình thường góp ý

Tôi tránh Git nửa tháng vì nghe nói "khó, dễ hỏng". Thứ đổi ý tôi là một câu của người kèm: "Git chỉ thêm, không bớt. Commit rồi thì không mất được nữa."

Đúng vậy: suốt thời gian học, tôi chưa mất gì vì Git — tôi chỉ mất đồ ở những ngày chưa dùng Git. Và tôi chỉ dùng đúng 4 lệnh: status, add ., commit -m, restore .. Ba lệnh kia học sau cũng được.

Bảng tra nhanh

Tình huống Lệnh
Đang có gì? git status
AI vừa sửa gì? git diff --stat rồi git diff
Chốt mốc git add . ; git commit -m "..."
AI làm hỏng, bỏ hết git restore .
Bỏ riêng một file git restore index.html
Xem lịch sử git log --oneline -10
Đẩy lên GitHub git push
Lỡ commit nhưng chưa push, muốn sửa lời nhắn git commit --amend -m "..."
Chốt review bài nàychuyên gia review
  • Đủ cho Cấp 2: bốn khu, bảy lệnh, git diff như công cụ kiểm soát AI, .gitignore, cảnh báo rò rỉ khóa.
  • Cố tình bỏ: rebase, cherry-pick, stash, giải quyết xung đột gộp nhánh. Làm một mình thì gần như không cần; cần thì học đúng lúc gặp.
  • Rủi ro còn lại: commit vẫn chỉ nằm trong máy bạn. Chưa push thì chưa an toàn trước chuyện máy hỏng — bài tiếp theo.
Bài tập chốt

Trên project của bạn:

  1. git init, tạo .gitignore, commit mốc đầu.
  2. Nhờ AI thêm một tính năng nhỏ. Chạy git diff --stat trước khi commit, đọc số dòng.
  3. Cố ý phá: nhờ nó "viết lại toàn bộ file cho đẹp hơn". Xem git diff --stat ra mấy trăm dòng.
  4. git restore . — thấy mọi thứ về nguyên. Đây là lúc bạn thật sự tin vào Git.