data-science · Vietnamese · 8 min
🇺🇸 Read in EnglishGit và GitHub: Công cụ không thể thiếu trong kỷ nguyên Vibe Coding
May 16, 2026
AI như Claude Code hay GitHub Copilot viết code ngày càng tốt. Nhưng chính vì thế, Git lại trở nên quan trọng hơn bao giờ hết — để bạn biết AI đã làm gì, và hoàn tác khi cần.
Vibe coding đang thay đổi cách chúng ta làm việc. Với sự hỗ trợ của Claude Code, GitHub Copilot hay Cursor, bạn có thể generate cả trăm dòng code chỉ bằng một câu prompt. Chất lượng code AI tạo ra ngày càng tốt — đủ để chạy được, đủ để ship được.
Nhưng có một vấn đề mới nảy sinh: bạn có thực sự biết AI vừa làm gì không?
Khi AI viết code thay bạn, việc review trở nên phức tạp hơn nhiều. Bạn không còn nhớ từng dòng được thêm vào khi nào, tại sao, và thay đổi gì so với lúc trước. Một session vibe coding 30 phút có thể tạo ra 500 dòng thay đổi trải rộng trên 10 file — không có Git, bạn gần như mù.
Đây là lý do Git và GitHub trở nên quan trọng hơn bao giờ hết trong kỷ nguyên AI-assisted coding: không phải để theo dõi bạn viết gì, mà để theo dõi AI đã làm gì với code của bạn.
Git hoạt động như thế nào
Git có 3 vùng bạn cần biết:
| Vùng | Vai trò | Lệnh liên quan |
|---|---|---|
| Working Directory | Nơi bạn (hoặc AI) đang sửa file | (bạn đang ở đây) |
| Staging Area | Chọn những thay đổi nào sẽ lưu | git add |
| Repository | Lịch sử đã lưu, không mất | git commit |
Workflow cơ bản: chỉnh sửa file → git add → git commit. Đơn giản vậy thôi.
Những lệnh thực tế dùng hàng ngày
Bắt đầu
# Clone một repo về máy
git clone https://github.com/user/repo.git
# Hoặc khởi tạo repo mới từ folder hiện tại
git initKiểm tra trạng thái
# Xem file nào đang thay đổi
git status
# Xem chi tiết những gì đã thay đổi
git diff
# Xem lịch sử commit
git log --onelinegit status và git diff là hai lệnh bạn nên chạy thường xuyên nhất khi làm việc với AI — trước khi commit, luôn kiểm tra AI đã thay đổi gì.
Lưu thay đổi
# Thêm tất cả thay đổi vào staging
git add .
# Hoặc chỉ thêm file cụ thể (thận trọng hơn)
git add src/main.py
# Lưu với message mô tả
git commit -m "feat: add user authentication"Tip với vibe coding: Đừng commit cả session AI một lần. Hãy commit theo từng tính năng nhỏ để dễ review và dễ rollback nếu cần.
Làm việc với branch
Branch cho phép bạn thử nghiệm mà không ảnh hưởng code chính. Đây là thói quen đặc biệt quan trọng khi dùng AI — luôn để AI làm việc trên branch riêng.
# Tạo branch mới và chuyển sang
git checkout -b feature/ten-tinh-nang
# Xem đang ở branch nào
git branch
# Chuyển về branch main
git checkout main
# Merge branch vào main (sau khi đã review xong)
git merge feature/ten-tinh-nang
# Xóa branch sau khi merge
git branch -d feature/ten-tinh-nangĐồng bộ với GitHub
# Đẩy code lên GitHub
git push origin main
# Kéo code mới nhất về
git pull origin main
# Kéo về nhưng không merge ngay (xem trước)
git fetch originKhi mọi thứ đổ bể — cách undo
Đây là phần quan trọng nhất khi làm việc với AI: biết cách hoàn tác.
Undo thay đổi chưa commit
# Bỏ thay đổi ở một file cụ thể (quay về lần commit cuối)
git checkout -- ten-file.py
# Bỏ tất cả thay đổi chưa commit (CẨN THẬN: không khôi phục được)
git checkout -- .Undo commit vừa tạo
# Undo commit nhưng GIỮ LẠI thay đổi (an toàn nhất)
git reset --soft HEAD~1
# Undo commit và unstage thay đổi
git reset HEAD~1
# Undo commit và XÓA LUÔN thay đổi (nguy hiểm, mất code)
git reset --hard HEAD~1Nguyên tắc: khi không chắc, dùng --soft. Bạn vẫn giữ được code, chỉ là bỏ commit đó.
Xem lịch sử để tìm điểm quay về
# Xem lịch sử ngắn gọn
git log --oneline
# Quay về một commit cụ thể (xem trước, không thay đổi gì)
git checkout abc1234
# Tạo branch mới từ một commit cũ
git checkout -b recovery-branch abc1234Khi AI tạo ra một đống thay đổi mà bạn muốn bỏ hết, git log --oneline + git reset là combo cứu cánh.
Làm việc với GitHub — Pull Request workflow
GitHub là nơi lưu trữ code online và cộng tác với người khác. Pull Request (PR) là cơ chế để review code trước khi merge — đặc biệt hữu ích khi review code do AI viết.
Quy trình cơ bản
# 1. Tạo branch mới
git checkout -b feature/add-login
# 2. Code (hoặc để AI code)
# 3. Commit
git add .
git commit -m "feat: add login form"
# 4. Đẩy branch lên GitHub
git push origin feature/add-login
# 5. Vào GitHub, tạo Pull Request
# 6. Review code, merge nếu OKXem thay đổi giữa branch và main
# Xem những commit có trên feature branch mà main chưa có
git log main..feature/add-login --oneline
# Xem toàn bộ code diff
git diff main..feature/add-loginĐây là cách bạn review AI: trước khi merge, chạy git diff main..feature-branch để xem toàn bộ những gì AI đã thay đổi, từng dòng.
Git Flow — quy trình làm việc cho dự án thực tế
Git Flow là một mô hình phân nhánh được thiết kế cho các dự án có chu kỳ release rõ ràng. Thay vì làm việc trực tiếp trên main, Git Flow định nghĩa các loại branch với vai trò cụ thể.
Cấu trúc branch trong Git Flow
main ← code đang chạy trên production
develop ← nơi tích hợp tất cả tính năng mới
feature/* ← phát triển từng tính năng
release/* ← chuẩn bị cho một phiên bản mới
hotfix/* ← vá lỗi khẩn cấp trực tiếp từ main
Vòng đời một tính năng mới
Bước 1: Tạo feature branch từ develop
git checkout develop
git pull origin develop # đảm bảo develop đang mới nhất
git checkout -b feature/user-authenticationBước 2: Phát triển tính năng
# Code (hoặc để AI code trên branch này)
git add .
git commit -m "feat: add login form"
git commit -m "feat: add JWT token handling"Bước 3: Cập nhật thay đổi mới từ develop vào branch đang làm
Trong thực tế, khi bạn đang làm feature thì đồng đội (hoặc AI ở branch khác) vẫn đang merge code mới vào develop. Bạn cần đồng bộ những thay đổi đó về branch của mình để tránh conflict lớn khi merge sau này.
Có hai cách:
Cách 1 — Merge develop vào feature branch (đơn giản, an toàn hơn):
git checkout develop
git pull origin develop # lấy thay đổi mới nhất về develop
git checkout feature/user-authentication
git merge develop # đưa thay đổi của develop vào branch hiện tại
# giải quyết conflict nếu có, rồi commitCách 2 — Rebase feature branch lên đầu develop (lịch sử commit gọn hơn):
git checkout feature/user-authentication
git rebase develop # "đặt lại" base của branch lên đầu develop
# giải quyết conflict từng commit nếu có
# git rebase --continue # sau khi giải quyết xong từng bướcChọn cách nào? Merge đơn giản và ít rủi ro hơn — phù hợp cho hầu hết trường hợp. Rebase tạo lịch sử commit thẳng, gọn hơn nhưng phức tạp hơn khi có conflict. Nếu mới dùng Git, hãy dùng merge trước.
Bước 4: Merge feature vào develop khi hoàn tất
git checkout develop
git merge feature/user-authentication
git push origin develop
git branch -d feature/user-authenticationKhi chuẩn bị release
# 1. Tạo release branch từ develop
git checkout develop
git checkout -b release/1.2.0
# 2. Chỉ fix bug, không thêm tính năng mới
git commit -m "fix: correct date format in reports"
# 3. Merge vào main (để deploy) và develop (để giữ sync)
git checkout main
git merge release/1.2.0
git tag -a v1.2.0 -m "Release version 1.2.0"
git checkout develop
git merge release/1.2.0
git branch -d release/1.2.0Khi có bug khẩn cấp trên production
# 1. Tạo hotfix branch từ main
git checkout main
git checkout -b hotfix/fix-payment-crash
# 2. Fix bug
git commit -m "fix: resolve payment crash on checkout"
# 3. Merge vào cả main và develop
git checkout main
git merge hotfix/fix-payment-crash
git tag -a v1.2.1 -m "Hotfix: payment crash"
git checkout develop
git merge hotfix/fix-payment-crash
git branch -d hotfix/fix-payment-crashGit Flow với AI coding
Git Flow đặc biệt phù hợp khi dùng AI vì nó tạo ra ranh giới rõ ràng:
- Để AI code trên
feature/*branch — không bao giờ để AI làm việc trực tiếp trêndevelophaymain - Review kỹ trước khi merge vào
develop— đây là checkpoint quan trọng nhất - Mỗi feature branch = một tính năng — giúp bạn dễ dàng so sánh
git diff develop..feature/tenđể xem AI đã làm gì
Lưu ý: Git Flow phù hợp với dự án có release cycle rõ ràng (ứng dụng, thư viện). Với blog, side project nhỏ hay notebook, quy trình đơn giản hơn (chỉ dùng
main+feature branch) thường là đủ.
Một số thói quen tốt nên có
Commit thường xuyên, commit nhỏ. Mỗi commit nên là một đơn vị thay đổi có nghĩa. Với AI coding, hãy commit sau mỗi tính năng nhỏ, không để tích lại cả nghìn dòng trong một commit.
Viết commit message có nghĩa. Thay vì "fix", hãy viết "fix: resolve login error when email has uppercase letters". Sau vài tuần, bạn sẽ cảm ơn bản thân về điều này.
Không commit file .env. File chứa API key, password, credentials không bao giờ được đưa vào Git. Tạo file .gitignore và thêm .env vào đó.
# Tạo .gitignore
echo ".env" >> .gitignore
echo "__pycache__/" >> .gitignore
echo "node_modules/" >> .gitignore
git add .gitignore
git commit -m "chore: add gitignore"Luôn tạo branch trước khi để AI code. Nếu AI tạo ra kết quả tệ, bạn chỉ cần xóa branch và bắt đầu lại — code trên main vẫn an toàn.
Sai lầm thường gặp khi dùng Git với AI
Commit cả session AI trong một lần. Sau 30 phút vibe coding, bạn chạy git add . && git commit -m "update". Kết quả: 500 dòng thay đổi, một commit, không ai review nổi. Hãy commit sau mỗi tính năng nhỏ.
Không xem git diff trước khi commit. AI có thể xóa code bạn viết, thêm dependency không cần thiết, hoặc sửa file không liên quan. Chạy git diff trước mỗi commit chỉ mất 30 giây nhưng bắt được rất nhiều vấn đề.
Để AI code thẳng trên main. Nếu AI tạo ra kết quả tệ, bạn không có cách rollback an toàn. Luôn tạo branch trước (git checkout -b feature/ten), để AI làm việc ở đó, review xong mới merge.
Dùng git reset --hard khi không chắc. --hard xóa luôn code trong working directory, không khôi phục được. Trong hầu hết tình huống, --soft là lựa chọn an toàn hơn — bạn vẫn giữ được code, chỉ bỏ commit.
Commit .env vì quên .gitignore. Xảy ra nhiều hơn bạn nghĩ, đặc biệt khi AI tạo file mới. Nếu lỡ commit rồi, chạy git rm --cached .env để bỏ file khỏi tracking, sau đó thêm vào .gitignore.
Tóm lại
- Git bây giờ theo dõi AI, không chỉ theo dõi bạn — đây là lý do Git quan trọng hơn trong kỷ nguyên vibe coding
- Chạy
git statusvàgit difftrước mỗi commit — thói quen này bắt hầu hết vấn đề trước khi chúng vào repo - Commit nhỏ, commit thường xuyên — mỗi commit là một đơn vị có nghĩa, dễ review và dễ rollback
- Luôn dùng branch khi để AI code — nếu AI tạo ra kết quả tệ, xóa branch và bắt đầu lại,
mainvẫn an toàn - Biết cách undo:
git reset --softlà lựa chọn an toàn nhất — giữ code, bỏ commit, không mất gì