🎮 Git và GitHub là gì? Lưu game cho dự án, hỏng là quay lại được

Trang 36 / 43

Chương 36

🎮 Git và GitHub là gì? Lưu game cho dự án, hỏng là quay lại được

Git là công cụ lưu lịch sử thay đổi của dự án ngay trên máy bạn, để bạn quay lại bản cũ khi lỡ làm hỏng. GitHub là nơi cất lịch sử đó trên mạng để sao lưu, chia sẻ và làm việc chung. Khi đã làm được một app cùng AI, đây là hai thứ giữ cho công sức của bạn không bao giờ mất.

Tin vui: bạn gần như không phải gõ lệnh Git bằng tay. Claude Code làm việc đó thay bạn. Việc của bạn là hiểu khái niệm, để biết khi nào nên lưu, đọc được lịch sử và nhận ra lệnh nguy hiểm trước khi bấm đồng ý.

🧠 Hiểu nhanh bằng ví dụ đời thường

Hãy tưởng tượng bạn chơi một trò chơi điện tử dài. Trước mỗi màn khó, bạn lưu game. Nếu thua, bạn tải lại điểm lưu gần nhất thay vì chơi lại từ đầu.

  • Mỗi lần lưu game chính là một commit: một "tấm ảnh chụp" toàn bộ dự án ở thời điểm đó, kèm một dòng ghi chú.
  • Danh sách các lần lưu là lịch sử (log).
  • Muốn thử một đường đi liều lĩnh mà không mất bản đang chơi tốt, bạn tạo bản sao để thử. Đó là nhánh (branch).
  • Còn GitHub giống như lưu game lên đám mây: máy hỏng thì vẫn còn, và bạn bè cũng vào chơi tiếp được.

⚙️ Nó hoạt động thế nào

Luồng làm việc của Git có bốn chặng:

  1. Thư mục làm việc: nơi bạn (hoặc Claude) sửa file như bình thường.
  2. Khu chờ (staging): bạn đánh dấu những thay đổi sẽ được lưu ở lần tới.
  3. Kho trên máy (local repo): lệnh commit chụp lại các thay đổi đã đánh dấu và cất vào lịch sử trên máy.
  4. GitHub: lệnh push đẩy lịch sử lên mạng; lệnh pull kéo thay đổi mới từ mạng về máy.

Các lệnh cốt lõi, để bạn đọc hiểu khi Claude hiện ra xin phép:

git init                    # khởi tạo kho Git trong thư mục hiện tại
git status                  # xem file nào đã thay đổi
git add .                   # đưa thay đổi vào khu chờ
git commit -m "thông điệp"  # lưu một mốc vào lịch sử
git log --oneline           # xem lịch sử commit gọn
git switch -c tinh-nang-moi # tạo và chuyển sang nhánh mới
git push                    # đẩy lên GitHub
git pull                    # kéo thay đổi mới nhất về

Giải nghĩa từng lệnh:

  • git init: biến thư mục thành một kho Git (tạo thư mục ẩn tên .git để giữ lịch sử). Mỗi dự án chỉ làm một lần.
  • git status: câu hỏi "mình đang ở đâu?", cho biết file nào đã đổi, file nào đã vào khu chờ. Đây là lệnh dùng nhiều nhất.
  • git add .: đánh dấu thay đổi sẽ vào lần lưu tới. Dấu chấm nghĩa là "tất cả"; có thể thay bằng tên một file.
  • git commit -m "...": lưu một mốc kèm câu mô tả ngắn, để sau này biết lần đó đã làm gì.
  • git log --oneline: xem danh sách các mốc, mỗi mốc một dòng.
  • git switch -c [tên nhánh]: tạo nhánh mới và chuyển sang đó.
  • git push / git pull: đẩy lên và kéo về giữa máy bạn và GitHub.

Nhịp hay gặp nhất chỉ có ba bước lặp lại: sửa file, git add, git commit. Thỉnh thoảng push một lần để sao lưu lên GitHub.

🌿 Nhánh: tách ra thử, ổn rồi mới gộp

Nhánh chính thường tên là main. Đây là bản "thật", luôn phải chạy được. Khi muốn thử một tính năng mới hay sửa một chỗ rủi ro, đừng động thẳng vào main. Hãy tách một nhánh riêng:

  1. Tách nhánh: từ một mốc trên main, Git tạo một nhánh chạy song song. Mọi commit từ đây nằm trên nhánh mới, main vẫn nguyên vẹn.
  2. Làm việc trên nhánh: cứ thoải mái thử. Nếu hỏng, chỉ hỏng trên nhánh này, sản phẩm đang chạy vẫn an toàn.
  3. Gộp lại (merge): khi tính năng chạy ổn, bạn gộp nhánh về main, trực tiếp hoặc qua một Pull Request trên GitHub (đề xuất gộp để người khác xem trước).

Nhờ vậy, nhiều tính năng hoặc nhiều người làm song song trên các nhánh khác nhau, ai hỏng người nấy chịu. Nhánh thử thất bại thì bỏ đi, main chưa từng bị đụng tới. Muốn đi xa hơn, bạn có thể chạy nhiều phiên Claude cùng lúc nhờ git worktrees, mỗi phiên làm trên một nhánh riêng.

🎯 Điều này có ý nghĩa gì với bạn: để Claude Code lo phần gõ lệnh

Trong Claude Code, bạn chỉ cần nói bằng lời. Claude tự chạy lệnh Git tương ứng, hiện lệnh ra và xin phép trước khi chạy. Vài câu mẫu bạn có thể dùng ngay:

Khởi tạo git cho thư mục này, tạo repo trên GitHub rồi push lên.
Commit các thay đổi hiện tại với mô tả "thêm xuất báo cáo CSV", rồi push.
So với commit trước thì mình đã đổi những gì?
Tạo nhánh thu-nghiem-bieu-do rồi chuyển sang đó.
Mình làm hỏng rồi, quay lại trạng thái ở commit trước giúp.

Claude đọc được trạng thái kho, tự viết câu mô tả commit gọn gàng, tạo nhánh, và nếu máy có cài công cụ gh của GitHub thì còn mở Pull Request giúp bạn.

Ba thói quen đáng giữ:

  • Commit sau mỗi mốc chạy được. Vừa thêm xong một tính năng và thử thấy ổn? Bảo Claude commit ngay. Đó là điểm lưu game của bạn.
  • Push lên GitHub cuối mỗi buổi làm. Máy hỏng, mất máy, bạn vẫn còn nguyên dự án.
  • Thử cái mới trên nhánh riêng. Nhất là khi nhờ Claude sửa lớn hay đổi thư viện.

🐙 GitHub có gì

Trên GitHub, mỗi dự án là một repo (kho), gồm:

PhầnDùng để làm gì
CommitsLịch sử mọi lần lưu, xem được ai đổi gì, lúc nào
Pull RequestsĐề xuất gộp một nhánh vào main, để người khác xem và góp ý trước
IssuesDanh sách lỗi và việc cần làm
ActionsTự chạy kiểm thử hoặc tự đưa bản mới lên máy chủ mỗi khi push

Phần Actions là bước tiếp theo khi bạn quen tay: mỗi lần push, GitHub tự kiểm tra và tự cập nhật trang web. Bạn có thể đọc thêm cách biến GitHub thành cỗ máy tự động với Claude Code.

⚠️ Hiểu lầm thường gặp

  • "Git và GitHub là một." Không. Git là công cụ chạy trên máy bạn, dùng được cả khi không có mạng. GitHub là dịch vụ trên mạng để cất và chia sẻ kho Git. Bạn có thể dùng Git mà không cần GitHub.
  • "Có Claude rồi thì không cần hiểu Git." Claude gõ lệnh giỏi, nhưng bạn vẫn là người bấm đồng ý. Hai lệnh cần dừng lại đọc kỹ: git reset --hard (xóa sạch thay đổi chưa lưu) và git push --force (ghi đè lịch sử trên GitHub, có thể làm mất công của người khác).
  • "Đưa lên GitHub là ai cũng thấy." Chỉ khi bạn để repo công khai (public). Repo riêng tư (private) chỉ bạn và người được mời mới xem được. Dù vậy, đừng bao giờ commit mật khẩu hay khóa API: hãy để chúng trong file .env và thêm file này vào .gitignore, như đã nói trong bài Tech stack là gì.

❓ Câu hỏi thường gặp

Git và GitHub khác nhau thế nào? Git lưu lịch sử thay đổi ngay trên máy bạn. GitHub là nơi cất kho Git đó trên mạng để sao lưu, chia sẻ và làm việc chung.

Bao lâu thì nên commit một lần? Sau mỗi mốc chạy được, ví dụ vừa thêm xong một nút và thử thấy ổn. Commit nhỏ và thường xuyên giúp quay lại đúng chỗ khi có lỗi.

Tôi không biết code, có cần học lệnh Git không? Không cần thuộc lệnh. Bạn chỉ cần hiểu commit, nhánh, push, pull là gì để ra lệnh cho Claude Code bằng lời và đọc hiểu lệnh trước khi duyệt.

Lỡ làm hỏng app thì quay lại thế nào? Nói với Claude: "Mình làm hỏng rồi, quay lại trạng thái ở commit trước giúp." Nếu bạn commit đều đặn, việc này chỉ mất vài giây.

Repo GitHub có tốn tiền không? Tài khoản miễn phí đã tạo được repo riêng tư không giới hạn, đủ cho dự án cá nhân và nhóm nhỏ.

#git #github #claudecode #vibecoding