Skip to content

Thực hành: Git Basic Workflow

🎯 Mục tiêu

🎯 Sau bài thực hành này, bạn sẽ:

  • Thành thạo quy trình init → add → commit → status → log
  • Hiểu rõ vai trò của staging area trong Git workflow
  • Phân biệt được working directory, staging area, và repository
  • Tự tin thao tác với Git trong dự án thực tế

Phần 1: Trắc nghiệm

🧠 Quiz

Câu 1: Staging area trong Git dùng để làm gì?

  • [ ] A) Lưu trữ vĩnh viễn tất cả thay đổi của dự án
  • [x] B) Chọn lọc những thay đổi nào sẽ đưa vào commit tiếp theo
  • [ ] C) Tự động đồng bộ code lên remote repository
  • [ ] D) Sao lưu file gốc trước khi chỉnh sửa

💡 Giải thích: Staging area (hay index) là vùng trung gian giữa working directory và repository. Nó cho phép bạn kiểm soát chính xác những thay đổi nào sẽ vào commit — không bắt buộc commit tất cả mọi thứ cùng lúc.

🧠 Quiz

Câu 2: Sự khác biệt chính giữa git commitgit push là gì?

  • [ ] A) Không có khác biệt — cả hai đều lưu code lên server
  • [ ] B) git commit chỉ hoạt động khi có internet
  • [x] C) git commit lưu thay đổi vào local repository, git push đẩy lên remote
  • [ ] D) git push tạo commit mới, git commit gửi commit lên server

💡 Giải thích: Git là hệ thống phân tán. git commit tạo snapshot tại local — hoàn toàn offline. git push mới là thao tác đưa các commit lên remote repository (GitHub, GitLab...).

🧠 Quiz

Câu 3: File .gitignore có tác dụng gì với file đã được track trước đó?

  • [ ] A) Tự động xóa file khỏi repository
  • [ ] B) Ngăn mọi thay đổi trên file đó
  • [x] C) Không có tác dụng — file đã track vẫn được theo dõi bình thường
  • [ ] D) Chuyển file sang trạng thái unmodified

💡 Giải thích: .gitignore chỉ ảnh hưởng đến file chưa được track. Nếu file đã trong repository, bạn cần git rm --cached <file> để untrack trước, rồi .gitignore mới có hiệu lực.

Phần 2: Sắp xếp thứ tự lệnh

🧩 Parsons Problem

Bài 1: Khởi tạo dự án mới và tạo commit đầu tiên

Sắp xếp các bước sau theo đúng thứ tự:

  1. mkdir my-project && cd my-project
  2. git init
  3. Tạo file README.md với nội dung mô tả dự án
  4. git add README.md
  5. git commit -m "Initial commit: add README"

🧩 Parsons Problem

Bài 2: Chỉnh sửa file và kiểm tra trạng thái trước khi commit

Sắp xếp workflow đúng sau khi chỉnh sửa nhiều file:

  1. Chỉnh sửa index.htmlstyle.css
  2. git status — kiểm tra file nào đã thay đổi
  3. git diff — xem chi tiết thay đổi
  4. git add index.html style.css
  5. git commit -m "Update layout and styling"
  6. git log --oneline — xác nhận commit thành công

Phần 3: Bài tập thực hành

Bài tập: Xây dựng lịch sử commit có ý nghĩa

Mục tiêu: Tạo một repository với 3 commit mạch lạc, mỗi commit đại diện cho một bước phát triển rõ ràng.

Các bước thực hiện:

  1. Tạo thư mục todo-app và khởi tạo Git repository
  2. Commit 1 — Tạo README.md mô tả dự án, commit với message "feat: add project README"
  3. Commit 2 — Tạo index.html với cấu trúc HTML cơ bản, commit với message "feat: add HTML skeleton"
  4. Commit 3 — Tạo .gitignore để loại trừ node_modules/.env, commit message "chore: add gitignore for node and env files"
  5. Dùng git log --oneline kiểm tra cả 3 commit và git log --stat để xem chi tiết

Mẹo

Commit message tốt nên theo format: <type>: <mô tả ngắn>. Các type phổ biến: feat, fix, chore, docs, refactor — quy ước Conventional Commits được dùng rộng rãi trong industry.