Vibe Coding thực chiến: Từ AI viết code đến GitHub
Mục lục
Các bài trong series Vibe Coding
- Bài 1: Vibe Coding là gì? Từ AI viết code đến triển khai ứng dụng lên VPS
- Bài 2: Vibe Coding thực chiến: Từ AI viết code đến GitHub ← Bạn đang đọc
- Bài 3: Docker cho Vibe Coder: Từ source code đến container trên Ubuntu
- Bài 4: Hướng dẫn deploy ứng dụng Vibe Coding lên VPS Ubuntu bằng Coolify (Đang cập nhật)
- Bài 5: CI/CD là gì? Hướng dẫn GitHub → Coolify → VPS tự động deploy (Đang cập nhật)
- Bài 6: Docker Production: Tối ưu Dockerfile, Docker Compose và bảo mật container (Đang cập nhật)
- Bài 7: Docker → Coolify → VPS: Hướng dẫn triển khai ứng dụng production (Đang cập nhật)
AI có thể giúp bạn tạo một website, REST API, dashboard, landing page hoặc thậm chí một ứng dụng hoàn chỉnh chỉ bằng những câu lệnh tự nhiên.
Bạn có thể yêu cầu AI:
“Tạo cho tôi một website bán hàng bằng Next.js.”
Hoặc:
“Tạo một API Node.js kết nối PostgreSQL.”
Hoặc:
“Tạo một dashboard quản lý khách hàng có đăng nhập.”
Sau một thời gian làm việc với AI, bạn có thể có một project chạy khá tốt trên máy tính.
Nhưng lúc này một vấn đề mới xuất hiện:
Code đã có, nhưng quản lý code như thế nào?
Nếu tiếp tục lưu project bằng những thư mục như:
project-final
project-final-2
project-final-new
project-final-new-2
project-final-okthì sớm muộn bạn cũng sẽ gặp vấn đề.
Bạn không biết:
- thay đổi nào đã được thực hiện?
- AI đã sửa file nào?
- phiên bản trước đang ở đâu?
- làm thế nào quay lại code cũ?
- làm thế nào chuyển project sang máy khác?
- làm thế nào chia sẻ project?
- làm thế nào để server lấy code mới?
- làm thế nào kết nối project với CI/CD?
Đây chính là lúc Git và GitHub trở thành một phần quan trọng trong workflow Vibe Coding.
Trong bài này, chúng ta sẽ thực hành toàn bộ quy trình:
Ý tưởng
↓
AI viết code
↓
Kiểm tra project
↓
Git
↓
GitHub
↓
Repository hoàn chỉnhMục tiêu là sau khi hoàn thành bài viết, bạn có thể tự mình đưa một project do AI tạo ra lên GitHub theo cách tương đối chuẩn và an toàn.

1. Vibe Coding không chỉ là AI viết code
Trước tiên cần hiểu một điều:
Vibe Coding không đồng nghĩa với việc giao toàn bộ công việc cho AI.
AI có thể giúp bạn viết code nhanh hơn rất nhiều. Nhưng một project thực tế vẫn cần:
- quản lý source code.
- kiểm tra thay đổi.
- quản lý dependency.
- quản lý environment.
- lưu lịch sử phiên bản.
- backup source code.
- cộng tác.
- deployment.
Đó là lý do workflow thực tế thường có dạng:
AI
↓
Source Code
↓
Git
↓
GitHub
↓
CI/CD / DeploymentỞ bài này chúng ta chỉ tập trung vào:
AI → Git → GitHub2. Git và GitHub có giống nhau không?
Đây là một trong những nhầm lẫn phổ biến nhất của người mới.
Git là gì?
Git là hệ thống quản lý phiên bản mã nguồn — Version Control System.
Git chạy trên máy tính của bạn. Nó giúp ghi lại lịch sử thay đổi của project.
Ví dụ:
Commit 1
↓
Tạo project
Commit 2
↓
Thêm login
Commit 3
↓
Thêm dashboard
Commit 4
↓
Sửa lỗi authenticationBạn có thể xem lại lịch sử:
git logGitHub là gì?
GitHub là một nền tảng lưu trữ và cộng tác trên Git repository.
Có thể hình dung đơn giản:
Git
↓
Quản lý phiên bản trên máyTrong khi:
GitHub
↓
Lưu repository online
↓
Chia sẻ
↓
Collaborate
↓
Pull Request
↓
CI/CDVì vậy:
Git không phải GitHub.
Bạn có thể sử dụng Git mà không cần GitHub. Nhưng trong workflow Vibe Coding hiện đại, GitHub rất hữu ích vì nó trở thành cầu nối giữa source code và các hệ thống deployment sau này.
3. Vì sao Vibe Coder nên sử dụng GitHub?
Giả sử bạn có một project AI-generated.
Nếu không sử dụng Git:
my-project/Bạn sửa code 20 lần.
Sau đó AI làm hỏng một phần quan trọng.
Bạn sẽ phải tự tìm:
“Trước lúc AI sửa thì file này như thế nào?”
Nếu sử dụng Git:
Commit 1
Commit 2
Commit 3
Commit 4
Commit 5Bạn có lịch sử thay đổi.
Có thể xem:
git log --onelineVí dụ:
f92ab31 Add customer dashboard
a8312df Fix login validation
2ac71fe Add authentication
9d32a01 Initial projectBạn biết chính xác project đã thay đổi như thế nào.
4. Workflow GitHub dành cho Vibe Coder
Một workflow đơn giản nhưng hiệu quả:
AI tạo feature
↓
Bạn kiểm tra
↓
Chạy thử
↓
Git status
↓
Git diff
↓
Git add
↓
Git commit
↓
Git push
↓
GitHubĐiểm quan trọng là:
Không nên để AI sửa project liên tục hàng chục lần rồi mới commit.
Thay vào đó:
Feature
↓
Test
↓
CommitMỗi commit nên đại diện cho một thay đổi có ý nghĩa.
5. Chuẩn bị Ubuntu
Trong bài này sử dụng Ubuntu để thực hành.
Bạn có thể sử dụng:
- Ubuntu Desktop.
- Ubuntu Server.
- Ubuntu VPS.
- Ubuntu trong máy ảo.
- Ubuntu thông qua WSL2 trên Windows.
Kiểm tra phiên bản Ubuntu:
lsb_release -aHoặc:
cat /etc/os-release6. Cài Git trên Ubuntu
Cập nhật package:
sudo apt updateCài Git:
sudo apt install git -yKiểm tra:
git --versionVí dụ:
git version 2.43.0Phiên bản cụ thể có thể khác tùy phiên bản Ubuntu.
7. Cấu hình Git lần đầu
Sau khi cài Git, hãy cấu hình tên:
git config --global user.name "Your Name"Cấu hình email:
git config --global user.email "your@email.com"Kiểm tra:
git config --global --listVí dụ:
user.name=Your Name
user.email=your@email.comEmail này sẽ được Git sử dụng để ghi nhận tác giả của commit.
8. Tạo project bằng AI
Giả sử bạn đang xây dựng một ứng dụng Node.js.
Bạn yêu cầu AI:
Tạo một REST API bằng Node.js và Express.
API có endpoint/api/health.
Endpoint trả về JSON{ "status": "ok" }.
Project có package.json và có thể chạy bằng npm.
AI có thể tạo:
my-vibe-app/
├── package.json
├── package-lock.json
└── server.jsVí dụ:
const express = require("express");
const app = express();
const PORT = process.env.PORT || 3000;
app.get("/api/health", (req, res) => {
res.json({
status: "ok"
});
});
app.listen(PORT, "0.0.0.0", () => {
console.log(`Server running on port ${PORT}`);
});9. Đừng vội git add .
Đây là thói quen rất quan trọng mà Vibe Coder nên hình thành.
Khi AI tạo project, bạn không nên lập tức chạy:
git add .Trước tiên phải kiểm tra:
Project có gì?
↓
Có secret không?
↓
Có .env không?
↓
Có node_modules không?
↓
Có file build không?
↓
Có credential không?Sau đó mới đưa những file cần thiết vào Git.
10. Kiểm tra cấu trúc project
Di chuyển vào project:
cd ~/my-vibe-appKiểm tra:
ls -laBạn có thể thấy:
.
..
package.json
package-lock.json
server.jsNếu project lớn hơn:
src/
public/
components/
lib/
app/
package.json
.env
node_modules/thì càng cần kiểm tra kỹ.
11. Những file không nên đưa lên GitHub
Một project AI-generated thường có rất nhiều file không cần commit.
Ví dụ:
node_modules/
.env
.env.local
dist/
build/
.next/
coverage/Hoặc các file chứa:
API key
Password
Token
Private key
Database credential
Cloud credentialKhông nên đưa những dữ liệu này vào repository.
Đặc biệt, GitHub cảnh báo không nên commit password hoặc các thông tin xác thực nhạy cảm vào repository. Nếu secret đã bị push, việc xóa file sau đó không đồng nghĩa với việc secret đã biến mất khỏi Git history.
Vì vậy:
Hãy ngăn secret đi vào Git ngay từ đầu.
12. .gitignore là gì?
.gitignore là file giúp Git biết những file nào không nên được theo dõi.
Tạo:
touch .gitignoreVí dụ với Node.js:
node_modules/
.env
.env.*
!.env.example
npm-debug.log*
yarn-debug.log*
pnpm-debug.log*
dist/
build/
.next/
coverage/
.DS_Store13. Tại sao .gitignore cực kỳ quan trọng với Vibe Coding?
AI có thể tạo:
.envmà bạn không để ý.
Nếu .env chưa nằm trong .gitignore, lệnh:
git add .có thể đưa nó vào staging.
Bạn commit:
git commit -m "Initial commit"và sau đó push:
git pushSecret đã lên GitHub.
Vì vậy hãy tạo .gitignore trước commit đầu tiên.
14. .env và .env.example
Đây là một workflow rất nên áp dụng.
Giả sử project cần:
DATABASE_URL=postgres://user:password@localhost:5432/app
JWT_SECRET=my-secret
API_KEY=xxxxxxxxBạn lưu thông tin thật trong:
.envNhưng:
.envkhông commit.
Thay vào đó tạo:
.env.exampleVí dụ:
DATABASE_URL=
JWT_SECRET=
API_KEY=File này có thể commit lên GitHub.
Mục đích:
Cho biết project cần những environment variable nào nhưng không tiết lộ giá trị thật.
15. Khởi tạo Git repository
Sau khi kiểm tra project:
git init -b mainNếu Git của bạn không hỗ trợ:
git init -b maincó thể dùng:
git init
git branch -M mainKiểm tra:
git statusKết quả có thể giống:
On branch main
No commits yet
Untracked files:
.gitignore
package.json
package-lock.json
server.js16. Hiểu git status
Nếu chỉ nhớ một command khi làm việc với Git, hãy nhớ:
git statusNó cho bạn biết:
- branch hiện tại;
- file chưa được theo dõi;
- file đã thay đổi;
- file đang staging;
- trạng thái repository.
Ví dụ:
Untracked files:
server.jscó nghĩa Git biết file tồn tại nhưng chưa theo dõi nó.
17. Git có 3 khu vực quan trọng
Một cách đơn giản để hiểu Git:
Working Directory
↓
Staging Area
↓
RepositoryKhi bạn sửa file:
Working DirectoryKhi chạy:
git add .file đi vào:
Staging AreaKhi chạy:
git committhay đổi được ghi vào:
Git RepositoryCó thể hình dung:
Code
↓
git add
↓
Staging
↓
git commit
↓
History18. git add hoạt động như thế nào?
Chạy:
git add .Dấu . nghĩa là thêm các thay đổi trong thư mục hiện tại vào staging.
Kiểm tra:
git statusBạn sẽ thấy các file dưới:
Changes to be committedĐây là lúc bạn nên kiểm tra lại một lần nữa.
19. Kiểm tra nội dung trước khi commit
Chạy:
git diff --cachedCommand này cho bạn xem những thay đổi đang chuẩn bị được commit.
Đây là một thói quen rất tốt:
git status
↓
git diff --cached
↓
git commitĐặc biệt hữu ích khi AI vừa sửa rất nhiều file.
20. Tạo commit đầu tiên
Nếu mọi thứ ổn:
git commit -m "Initial commit"Kiểm tra:
git log --onelineVí dụ:
8e23a41 Initial commitBạn vừa tạo snapshot đầu tiên của project.
21. Commit nên đặt tên thế nào?
Không nên:
git commit -m "update"hoặc:
git commit -m "fix"Nên mô tả rõ thay đổi:
git commit -m "Add health check API"git commit -m "Add authentication"git commit -m "Fix login validation"git commit -m "Update dashboard layout"Một commit tốt thể hiện được:
Commit này đã thay đổi điều gì?
22. Workflow commit phù hợp với Vibe Coding
Giả sử bạn yêu cầu AI:
Thêm chức năng đăng nhập.
AI sửa:
auth.js
login.js
middleware.jsBạn test.
Nếu hoạt động:
git status
git diff
git add .
git commit -m "Add user authentication"Sau đó yêu cầu AI: Thêm dashboard
AI sửa tiếp.
Test:
git status
git diffCommit:
git add .
git commit -m "Add user dashboard"Lịch sử lúc này:
Add user dashboard
Add user authentication
Initial commitĐây chính là cách Git trở thành “bộ nhớ” của project.
23. Tạo repository trên GitHub
Đăng nhập GitHub.
Chọn:
New repository
Đặt tên:
my-vibe-appBạn có thể chọn:
Privatecho project cá nhân.
Nếu muốn chia sẻ source code:
PublicLưu ý quan trọng
Nếu bạn đã có project local, không cần tạo thêm README, .gitignore hoặc license trên GitHub nếu bạn muốn tránh việc repository remote có commit ban đầu khác với repository local.
Bạn có thể tạo một repository trống rồi push project local lên.
24. Kết nối Git local với GitHub
GitHub repository sẽ có địa chỉ dạng:
https://github.com/YOUR_USERNAME/my-vibe-app.gitTrong project local:
git remote add origin https://github.com/YOUR_USERNAME/my-vibe-app.gitKiểm tra:
git remote -vKết quả:
origin https://github.com/YOUR_USERNAME/my-vibe-app.git (fetch)
origin https://github.com/YOUR_USERNAME/my-vibe-app.git (push)origin chỉ là tên phổ biến được đặt cho remote repository.
25. Push project lên GitHub
Sau khi kết nối:
git push -u origin mainGiải thích:
git push→ gửi commit lên remote.
origin→ remote GitHub.
main→ branch muốn push.
Sau khi hoàn thành, mở repository trên GitHub. Bạn sẽ thấy source code.
26. GitHub lúc này trở thành “nguồn sự thật” của source code
Workflow của bạn đã chuyển từ:
Project chỉ nằm trên máythành:
Local Project
↓
Git
↓
GitHubĐiều này có rất nhiều lợi ích.
Bạn có thể:
- làm việc trên máy khác.
- backup source code.
- chia sẻ project.
- theo dõi lịch sử.
- tạo branch.
- tạo Pull Request.
- kết nối CI/CD.
- kết nối hệ thống deployment.
27. git clone: đưa project từ GitHub về máy khác
Giả sử bạn chuyển sang một máy Ubuntu khác.
Không cần copy toàn bộ thư mục project bằng USB.
Chỉ cần:
git clone https://github.com/YOUR_USERNAME/my-vibe-app.gitSau đó:
cd my-vibe-appBạn đã có source code.
Đây là một trong những lý do GitHub đặc biệt hữu ích với Vibe Coder.
28. git pull: lấy code mới nhất
Giả sử bạn làm việc trên máy A.
Bạn sửa code:
git add .
git commit -m "Add user profile"
git pushSau đó chuyển sang máy B.
Chạy:
git pullMáy B sẽ lấy thay đổi mới từ GitHub.
Workflow:
Máy A
↓
git push
↓
GitHub
↓
git pull
↓
Máy B29. git push và git pull
Hai command này rất dễ nhớ:
git push→ Local → GitHub
git pull→ GitHub → Local
Có thể hình dung:
GitHub
↗ ↘
push pull
↗ ↘
Local Local30. Git branch là gì?
Khi project phát triển, bạn không nhất thiết phải sửa trực tiếp trên main.
Bạn có thể tạo branch:
git checkout -b feature/loginHoặc với Git hiện đại:
git switch -c feature/loginKiểm tra:
git branchVí dụ:
* feature/login
mainBạn đang làm việc trên:
feature/login31. Vì sao branch hữu ích khi Vibe Coding?
AI có thể tạo ra thay đổi lớn.
Ví dụ bạn muốn thử:
“Hãy redesign toàn bộ dashboard.”
Thay vì sửa trực tiếp main:
maintạo:
feature/new-dashboardAI có thể thay đổi hàng chục file.
Bạn test.
Nếu tốt:
feature/new-dashboard
↓
Pull Request
↓
mainNếu tệ:
Xóa branchvà main vẫn an toàn.
32. Branch workflow đơn giản cho Vibe Coder
Bạn không cần ngay lập tức học Git Flow phức tạp.
Có thể bắt đầu:
main
│
├── feature/login
├── feature/dashboard
└── fix/payment-errorWorkflow:
Tạo branch
↓
AI coding
↓
Test
↓
Commit
↓
Push branch
↓
Pull Request
↓
Merge main33. Pull Request là gì?
Pull Request, thường gọi là PR, là đề nghị đưa thay đổi từ một branch vào branch khác.
Ví dụ:
feature/login
↓
Pull Request
↓
mainPR cho phép bạn:
- xem code thay đổi.
- review.
- thảo luận.
- chạy automated checks.
- quyết định có merge hay không.
Đây là bước rất hữu ích khi project bắt đầu lớn.
34. Vibe Coding + Pull Request
Một workflow khá mạnh là:
Bạn
↓
Yêu cầu AI tạo feature
↓
AI sửa code
↓
Bạn test
↓
Git commit
↓
Push branch
↓
GitHub Pull Request
↓
Review
↓
MergeNếu làm việc nhóm, người khác có thể review.
Nếu làm một mình, PR vẫn hữu ích vì bạn có một checkpoint rõ ràng trước khi đưa thay đổi vào main.
35. Một workflow tốt hơn khi làm việc với AI
Thay vì nói:
“Làm toàn bộ tính năng này.”
Bạn có thể chia nhỏ:
Task 1
↓
AI code
↓
Test
↓
Commit
Task 2
↓
AI code
↓
Test
↓
Commit
Task 3
↓
AI code
↓
Test
↓
CommitVí dụ:
Initial commit
↓
Add database schema
↓
Add authentication
↓
Add user dashboard
↓
Add API validation
↓
Fix authentication bugKhi đó nếu AI tạo lỗi:
Bạn biết lỗi có khả năng xuất hiện từ commit nào.
36. git diff – công cụ Vibe Coder nên sử dụng thường xuyên
Sau khi AI sửa code:
git diffBạn sẽ thấy chính xác:
- dòng nào bị xóa.
- dòng nào được thêm.
- file nào thay đổi.
Ví dụ:
- const PORT = 3000;
+ const PORT = process.env.PORT || 3000;Điều này cực kỳ hữu ích.
Thay vì tin rằng:
“AI nói đã sửa đúng.”
Bạn có thể tự kiểm tra:
“AI thực sự đã thay đổi những gì?”
37. Kiểm tra lịch sử một file
Có thể xem lịch sử:
git log -- server.jsHoặc:
git log -p -- server.jsBạn có thể biết file đó đã thay đổi qua các commit như thế nào.
38. Quay lại commit trước
Một trong những giá trị lớn nhất của Git là khả năng phục hồi.
Xem commit:
git log --onelineVí dụ:
e12f331 Add dashboard
a81b210 Add authentication
29ac011 Initial commitNếu cần kiểm tra phiên bản cũ:
git checkout 29ac011Hoặc với Git hiện đại:
git switch --detach 29ac011Điều này cho phép bạn xem source code tại thời điểm commit đó.
Lưu ý: đừng tùy tiện reset hoặc force-push branch đang dùng chung nếu chưa hiểu rõ tác động.
39. git reset và git revert khác nhau
Đây là phần Vibe Coder nên biết cơ bản.
git revert
Tạo một commit mới để đảo ngược thay đổi.
Phù hợp khi commit đã được push lên repository dùng chung.
Ví dụ:
git revert <commit>git reset
Di chuyển lại HEAD/branch về một trạng thái khác và có thể thay đổi lịch sử.
Ví dụ:
git reset --hard HEAD~1Lệnh này có thể làm mất các thay đổi local chưa lưu.
Vì vậy:
Đừng copy
git reset --hardtừ AI nếu bạn chưa hiểu nó đang xóa gì.
40. Authentication với GitHub
Khi push code lên GitHub, GitHub cần xác thực bạn có quyền ghi vào repository hay không.
Có hai phương án phổ biến:
HTTPS
https://github.com/username/project.gitSSH
git@github.com:username/project.gitĐối với người mới, HTTPS có thể dễ hiểu hơn.
Đối với workflow phát triển lâu dài, SSH rất tiện vì sau khi cấu hình bạn có thể push/pull mà không phải xử lý credential theo cách thủ công mỗi lần.
41. Sử dụng SSH với GitHub
Tạo SSH key:
ssh-keygen -t ed25519 -C "your@email.com"Nhấn Enter để sử dụng đường dẫn mặc định nếu phù hợp.
Sau đó lấy public key:
cat ~/.ssh/id_ed25519.pubCopy nội dung.
Trong GitHub:
Settings → SSH and GPG keys → New SSH key
Paste public key.
Kiểm tra kết nối:
ssh -T git@github.comNếu thành công, GitHub sẽ xác nhận bạn đã xác thực.
42. Chuyển remote từ HTTPS sang SSH
Nếu đang dùng:
https://github.com/username/my-vibe-app.gitcó thể đổi:
git remote set-url origin git@github.com:username/my-vibe-app.gitKiểm tra:
git remote -vSau đó:
git push43. Những lỗi GitHub phổ biến
Permission denied
Ví dụ:
Permission denied (publickey).Có thể do:
- SSH key chưa được thêm vào GitHub;
- ssh-agent chưa có key;
- remote URL sai;
- đang sử dụng sai account.
Kiểm tra:
ssh -T git@github.comRepository not found
Kiểm tra:
git remote -vCó thể repository URL sai.
Authentication failed
Nếu sử dụng HTTPS, kiểm tra credential/authentication hiện tại và cách GitHub yêu cầu xác thực.
Không nên gửi password hoặc token vào chat, source code hoặc commit.
44. Lỗi phổ biến nhất: commit .env
Nếu bạn phát hiện:
.envđã xuất hiện trên GitHub và file có secret:
Không chỉ đơn giản xóa file rồi commit tiếp.
Ví dụ:
rm .env
git add .
git commit -m "Remove env"
git pushSecret có thể vẫn tồn tại trong Git history.
Cần:
- Rotate/revoke secret đã lộ.
- Xóa secret khỏi repository/history nếu cần.
- Tạo credential mới.
- Kiểm tra lại repository.
Nguyên tắc:
Một secret đã push lên GitHub nên được xem như đã bị lộ.
45. Không đưa .env lên GitHub không có nghĩa production không cần environment variables
Đây là điểm nhiều người mới nhầm.
Local:
.envProduction:
Environment VariablesVí dụ:
DATABASE_URL
JWT_SECRET
API_KEYcó thể được cấu hình trong hệ thống deployment.
Sau này khi sử dụng Coolify, các environment variables có thể được cấu hình trong application thay vì commit secret vào Git.
46. AI có thể giúp bạn với Git, nhưng đừng copy lệnh mù quáng
Bạn hoàn toàn có thể hỏi AI:
“Tôi vừa tạo branch feature/login, hãy hướng dẫn tôi commit và push branch này.”
Hoặc:
“Đây là output của git status, hãy giải thích cho tôi từng phần.”
Hoặc:
“Đây là git diff, hãy kiểm tra xem AI vừa thay đổi những gì.”
Đây là cách sử dụng AI rất hiệu quả.
Nhưng hãy đặc biệt cẩn thận với các command:
git reset --hard
git clean -fd
git push --forceĐây là những command có thể làm mất dữ liệu hoặc thay đổi lịch sử repository.
47. Prompt mẫu: nhờ AI audit Git repository
Bạn có thể đưa prompt sau cho AI:
Hãy audit Git repository của project hiện tại.
Kiểm tra:
1. Git repository đã được khởi tạo đúng chưa.
2. Branch hiện tại là gì.
3. Có file nào chưa được track không.
4. Có file nào đáng lẽ phải nằm trong .gitignore không.
5. Có .env hoặc secret nào có nguy cơ bị commit không.
6. Commit gần nhất thay đổi những gì.
7. Remote origin đang trỏ đến đâu.
8. Có vấn đề nào trước khi push lên GitHub không.
Không tự ý chạy git reset, git clean hoặc git push --force.
Chỉ phân tích và đề xuất trước.Prompt này đặc biệt hữu ích khi bạn đang làm việc với AI coding agent.
48. Prompt mẫu: yêu cầu AI chuẩn hóa project trước GitHub
Tôi chuẩn bị đưa project này lên GitHub.
Hãy kiểm tra toàn bộ project và đề xuất cấu trúc repository phù hợp.
Yêu cầu:
- Tạo .gitignore phù hợp với framework hiện tại.
- Không commit node_modules.
- Không commit .env.
- Không commit API key, password hoặc secret.
- Tạo .env.example nếu project sử dụng environment variables.
- Kiểm tra package.json và lock file.
- Kiểm tra README.
- Không xóa source code.
- Không chạy git push.
- Không tạo commit.
Trước tiên hãy audit và liệt kê những gì cần thay đổi.Điểm quan trọng là yêu cầu AI:
Audit trước, sửa sau.
49. Từ GitHub đến CI/CD
Đây là lúc GitHub bắt đầu trở nên quan trọng hơn rất nhiều.
Hiện tại:
AI
↓
Git
↓
GitHubNhưng sau này chúng ta có thể có:
AI
↓
Git
↓
GitHub
↓
CI/CD
↓
VPSVí dụ bạn sửa code:
git add .
git commit -m "Update landing page"
git pushSau đó hệ thống deployment có thể tự động:
GitHub
↓
Phát hiện commit mới
↓
Build
↓
Test
↓
DeployBạn không cần mỗi lần sửa code lại copy source code thủ công lên VPS.
Code xong rồi, deploy ở đâu?
Đưa code lên GitHub mới chỉ là bước đầu. Khi muốn biến project AI-generated thành một ứng dụng chạy thật, bạn cần một môi trường server ổn định để triển khai và vận hành.
VPS EZ TECH giúp Vibe Coder chủ động chạy website, API và ứng dụng Docker trên VPS riêng.
AI → GitHub → Docker → VPS → Production
👉 Khám phá các gói VPS vSAN của EZ TECH
👉 Khám phá các gói VPS giá rẻ của EZ TECH
Đó chính là nền tảng của workflow GitHub → Coolify → VPS mà chúng ta sẽ triển khai ở các bài sau.
50. Tại sao GitHub nên xuất hiện trước Docker?
Workflow của một Vibe Coder có thể được tổ chức như sau:
AI
↓
Source Code
↓
GitHub
↓
Docker
↓
DeploymentGitHub đóng vai trò là nguồn source code.
Docker đóng vai trò đóng gói application.
Sau đó hệ thống deployment lấy source code từ GitHub và build/deploy application.
Vì vậy, học GitHub trước Docker là một trình tự hợp lý cho người mới.
51. GitHub không phải nơi để “ném toàn bộ project vào”
Một repository tốt không nhất thiết chứa mọi thứ trên máy tính.
Nó nên chứa:
Source code
Configuration template
Documentation
Dependency manifest
Build configurationKhông nên chứa:
node_modules
.env
secret
log
cache
temporary files
large generated filesHãy nghĩ:
GitHub là source repository, không phải ổ cứng backup toàn bộ máy tính.
52. Repository chuẩn cho một project Vibe Coding
Sau khi chuẩn hóa, project có thể có:
my-vibe-app/
│
├── .git/
├── .gitignore
├── .env.example
├── README.md
├── package.json
├── package-lock.json
│
├── src/
│ ├── app.js
│ ├── routes/
│ ├── controllers/
│ └── services/
│
└── public/Không có:
.env
node_modules/Repository như vậy sẽ dễ dàng chuyển sang bước Docker và deployment hơn.
53. Checklist trước khi push GitHub
Trước lệnh:
git pushhãy kiểm tra:
- Project chạy được local.
- Đã tạo
.gitignore. .envnằm trong.gitignore.- Không có API key trong source code.
- Không có password trong source code.
- Không có private key.
- Không commit
node_modules. - Không commit file build không cần thiết.
- Đã chạy
git status. - Đã kiểm tra
git diff. - Đã kiểm tra
git diff --cached. - Commit có message rõ ràng.
- Remote
originđúng repository. - Branch đúng.
- Repository GitHub đúng account.
Sau đó:
git push54. Workflow hoàn chỉnh cho Vibe Coder
Đến đây, bạn đã có thể hình thành workflow:
Ý TƯỞNG
↓
AI Coding
↓
Local Project
↓
Test & Review
↓
git status
↓
git diff
↓
git add
↓
git commit
↓
git push
↓
GitHubĐây là workflow nền tảng.
Sau này có thể mở rộng:
AI
↓
GitHub
↓
Docker
↓
Coolify
↓
VPS
↓
Production55. Vibe Coder nên nhớ 7 command Git quan trọng nhất
Nếu mới bắt đầu, chưa cần nhớ hàng trăm Git command. Hãy nắm chắc:
Kiểm tra trạng thái
git statusXem thay đổi
git diffĐưa file vào staging
git add .Tạo commit
git commit -m "Your message"Xem lịch sử
git log --onelineĐẩy code lên GitHub
git pushLấy code mới
git pullChỉ cần thành thạo nhóm command này, bạn đã có nền tảng Git khá tốt để bắt đầu workflow Vibe Coding.
56. Một workflow thực tế từ đầu đến cuối
Giả sử AI vừa tạo một project mới.
Bạn có thể thực hiện:
cd ~/my-vibe-appTạo .gitignore:
nano .gitignoreThêm:
node_modules/
.env
.env.*
!.env.example
dist/
build/
.next/
coverage/
.DS_StoreKhởi tạo Git:
git init -b mainKiểm tra:
git statusThêm file:
git add .Kiểm tra:
git diff --cachedCommit:
git commit -m "Initial commit"Kết nối GitHub:
git remote add origin git@github.com:YOUR_USERNAME/my-vibe-app.gitPush:
git push -u origin mainXong.
Project AI-generated của bạn đã trở thành một GitHub repository.
57. Sau khi GitHub đã ổn định, bước tiếp theo là gì?
Bây giờ chúng ta có:
AI
↓
Git
↓
GitHubNhưng project vẫn đang phụ thuộc vào môi trường chạy.
Ví dụ:
Node.js
npm
Operating System
Dependencies
EnvironmentKhi chuyển project sang một server khác, bạn cần đảm bảo môi trường chạy tương thích. Đó là lý do bước tiếp theo sẽ là:
GitHub
↓
Docker
↓
ContainerDocker giúp đóng gói ứng dụng và môi trường cần thiết để chạy ứng dụng thành container.
Bài tiếp theo trong series: Docker cho Vibe Coder: Từ source code đến container trên Ubuntu
Trong bài đó chúng ta sẽ đi từ con số 0:
Docker là gì?
↓
Image
↓
Container
↓
Dockerfile
↓
.dockerignore
↓
docker build
↓
docker run
↓
Port
↓
Environment Variables
↓
Docker Compose
↓
Debug containerSau đó mới chuyển sang:
GitHub
↓
Coolify
↓
VPS Ubuntu
↓
Production58. Kết luận
Vibe Coding giúp rút ngắn đáng kể khoảng cách từ ý tưởng đến source code. Nhưng source code chỉ là điểm bắt đầu.
Để project trở thành một ứng dụng có thể phát triển và triển khai lâu dài, bạn cần một workflow rõ ràng:
AI
↓
Code
↓
Test
↓
Git
↓
GitHubGit giúp bạn kiểm soát lịch sử source code.
GitHub giúp bạn lưu trữ repository, cộng tác và tạo nền tảng cho CI/CD.
Quan trọng hơn, workflow này giúp bạn thoát khỏi kiểu làm việc:
project-final
project-final-2
project-final-new
project-final-okvà chuyển sang:
Commit
↓
Commit
↓
Commit
↓
GitHub- Mỗi thay đổi đều có lịch sử.
- Mỗi feature đều có thể được kiểm tra.
- Mỗi phiên bản đều có thể truy xuất.
Và khi project đã nằm trên GitHub, bạn đã hoàn thành một bước rất quan trọng để tiến tới workflow:
AI → GitHub → Docker → Coolify → VPS → ProductionĐó mới là workflow Vibe Coding hoàn chỉnh mà chúng ta sẽ xây dựng trong toàn bộ series.
Các bài trong series Vibe Coding
- Bài 1: Vibe Coding là gì? Từ AI viết code đến triển khai ứng dụng lên VPS
- Bài 2: Vibe Coding thực chiến: Từ AI viết code đến GitHub ← Bạn đang đọc
- Bài 3: Docker cho Vibe Coder: Từ source code đến container trên Ubuntu
- Bài 4: Hướng dẫn deploy ứng dụng Vibe Coding lên VPS Ubuntu bằng Coolify (Đang cập nhật)
- Bài 5: CI/CD là gì? Hướng dẫn GitHub → Coolify → VPS tự động deploy (Đang cập nhật)
- Bài 6: Docker Production: Tối ưu Dockerfile, Docker Compose và bảo mật container (Đang cập nhật)
- Bài 7: Docker → Coolify → VPS: Hướng dẫn triển khai ứng dụng production (Đang cập nhật)

