Các lệnh cơ bản: init, add, commit, status, log
Bài trước: 02. Cài đặt và cấu hình Git
Bài tiếp theo: 04. Hiểu về Working Directory và Staging Area
🎯 Mục tiêu học tập
- Nắm vững workflow cơ bản: init → add → commit
- Hiểu cách sử dụng
git statusđể kiểm tra trạng thái - Sử dụng
git logđể xem lịch sử commit - Thực hành tạo commit message có ý nghĩa
📘 Kiến thức lý thuyết
Workflow cơ bản của Git
Khi làm việc với Git, bạn thường làm theo 3 bước:
1. Sửa code (tạo/sửa/xóa file)
↓
2. git add (thêm vào staging area)
↓
3. git commit (lưu snapshot)Ví dụ thực tế: Giống như chụp ảnh:
- Sửa code = Bạn sắp xếp cảnh vật
- git add = Bạn chọn những gì muốn chụp vào khung hình
- git commit = Bấm nút chụp ảnh (lưu lại snapshot)
Các lệnh cơ bản
git init - Khởi tạo repository
Chức năng: Biến một thư mục thường thành Git repository
Khi nào dùng: Khi bắt đầu dự án mới hoặc muốn bắt đầu dùng Git cho dự án cũ
git init
# Tạo folder .git (ẩn) chứa toàn bộ lịch sử Gitgit status - Kiểm tra trạng thái
Chức năng: Xem file nào đã thay đổi, file nào đã được stage
Khi nào dùng: Trước khi commit, để biết bạn đã add đủ file chưa
Kết quả có thể có:
- Untracked files: File mới, Git chưa theo dõi
- Changes not staged: File đã sửa nhưng chưa add
- Changes to be committed: File đã add, sẵn sàng commit
- Clean working tree: Không có thay đổi nào
git add - Thêm file vào staging area
Chức năng: Đánh dấu file sẽ được commit
Các cách dùng:
git add file.html # Thêm 1 file cụ thể
git add *.html # Thêm tất cả file .html
git add . # Thêm TẤT CẢ file thay đổi
git add src/ # Thêm cả thư mục src/Lưu ý: git add . rất tiện nhưng cần cẩn thận - có thể add cả file không mong muốn!
git commit - Lưu snapshot
Chức năng: Lưu trạng thái hiện tại của code vào lịch sử
Cú pháp:
git commit -m "Mô tả ngắn gọn những gì bạn đã làm"Ví dụ commit message tốt:
- ✅ "Thêm nút đăng nhập vào trang chủ"
- ✅ "Sửa lỗi responsive trên mobile"
- ✅ "Cập nhật README với hướng dẫn cài đặt"
Ví dụ commit message không tốt:
- ❌ "update" (quá mơ hồ)
- ❌ "fix" (fix cái gì?)
- ❌ "asdf" (không có nghĩa)
git log - Xem lịch sử commit
Chức năng: Xem tất cả các commit đã tạo
Các tùy chọn hữu ích:
git log # Xem toàn bộ log
git log --oneline # Hiển thị gọn trên 1 dòng
git log -5 # Chỉ xem 5 commit gần nhất
git log --graph # Hiển thị dạng cây (tree)
git log --graph --oneline # Kết hợp cả haiCommit Message Best Practice
Quy tắc vàng: Commit message nên:
- Ngắn gọn: Dưới 50 ký tự cho dòng đầu
- Rõ ràng: Mô tả chính xác bạn làm gì
- Dùng câu mệnh lệnh: "Thêm tính năng" thay vì "Đã thêm tính năng"
Ví dụ tốt:
Thêm form đăng nhập với validation
Sửa lỗi hiển thị menu trên mobile
Cập nhật API endpoint cho sản phẩm💻 Ví dụ thực hành
Tạo dự án web và thực hiện commit đầu tiên
# Bước 1: Tạo thư mục và khởi tạo Git
mkdir my-blog
cd my-blog
git init
# Bước 2: Tạo file HTML
echo "<!DOCTYPE html>
<html>
<head>
<title>Blog của tôi</title>
</head>
<body>
<h1>Xin chào!</h1>
</body>
</html>" > index.html
# Bước 3: Kiểm tra trạng thái
git status
# Kết quả:
# On branch main
# Untracked files:
# index.htmlGiải thích:
git statuscho thấy có fileindex.htmlchưa được track
# Bước 4: Thêm file vào staging area
git add index.html
# Hoặc thêm tất cả file:
# git add .
# Bước 5: Kiểm tra lại trạng thái
git status
# Kết quả:
# On branch main
# Changes to be committed:
# new file: index.htmlGiải thích:
- File đã chuyển sang "Changes to be committed" = Sẵn sàng commit
# Bước 6: Tạo commit đầu tiên
git commit -m "Thêm trang chủ HTML cơ bản"
# Kết quả:
# [main (root-commit) abc1234] Thêm trang chủ HTML cơ bản
# 1 file changed, 7 insertions(+)Giải thích:
(root-commit): Đây là commit đầu tiên (gốc)abc1234: Hash của commit (mã định danh)1 file changed, 7 insertions(+): Thống kê thay đổi
# Bước 7: Xem lịch sử commit
git log --oneline
# Kết quả:
# abc1234 (HEAD -> main) Thêm trang chủ HTML cơ bảnThực hiện commit thứ hai
# Bước 1: Sửa file (thêm CSS)
echo "<style>
body { font-family: Arial; }
h1 { color: blue; }
</style>" >> index.html
# Bước 2: Kiểm tra thay đổi
git status
# Kết quả:
# Changes not staged for commit:
# modified: index.htmlGiải thích:
- "Changes not staged" = Đã sửa nhưng chưa add
# Bước 3: Xem thay đổi cụ thể (sẽ học ở bài sau)
git diff
# Bước 4: Add và commit
git add index.html
git commit -m "Thêm CSS styling cho trang chủ"
# Bước 5: Xem log
git log --oneline
# Kết quả:
# def5678 (HEAD -> main) Thêm CSS styling cho trang chủ
# abc1234 Thêm trang chủ HTML cơ bảnGiải thích:
HEAD -> main: HEAD đang trỏ đến commit mới nhất trên branch main- Có 2 commit, commit mới nhất ở trên
Xem thông tin chi tiết commit
# Xem thông tin chi tiết commit gần nhất
git show
# Hoặc xem commit cụ thể
git show abc1234
# Xem log với thông tin đầy đủ
git log
# Kết quả mẫu:
# commit def5678
# Author: Nguyễn Văn A <nguyenvana@example.com>
# Date: Mon Jan 15 10:30:45 2024 +0700
#
# Thêm CSS styling cho trang chủ
#
# commit abc1234
# Author: Nguyễn Văn A <nguyenvana@example.com>
# Date: Mon Jan 15 09:15:20 2024 +0700
#
# Thêm trang chủ HTML cơ bản🧩 Bài tập
Level 1: Cơ bản
Bài tập 1: Tạo website portfolio với Git
- Tạo thư mục
portfoliovà khởi tạo Git - Tạo file
index.htmlvới nội dung cơ bản - Tạo commit đầu tiên với message: "Khởi tạo dự án portfolio"
- Thêm file
style.cssvới một số CSS - Tạo commit thứ hai: "Thêm file CSS cơ bản"
- Xem lịch sử bằng
git log --oneline
Kết quả mong đợi: Có ít nhất 2 commit trong log
Gợi ý:
mkdir portfolio && cd portfolio
git init
# Tạo file index.html
git add index.html
git commit -m "Khởi tạo dự án portfolio"
# Tạo file style.css
git add style.css
git commit -m "Thêm file CSS cơ bản"
git log --onelineLevel 2: Nâng cao
Bài tập 2: Thực hành workflow đầy đủ
Tạo một dự án website đơn giản với các bước:
- Commit 1: Tạo file
index.htmlvới cấu trúc HTML cơ bản - Commit 2: Thêm file
style.cssvà link vào HTML - Commit 3: Thêm file
script.jsvới JavaScript đơn giản - Commit 4: Cập nhật HTML thêm một section mới
- Commit 5: Sửa CSS để responsive trên mobile
Yêu cầu:
- Mỗi commit phải có message rõ ràng, mô tả đúng việc làm
- Sau mỗi commit, chạy
git log --onelineđể xem lịch sử - Cuối cùng, có ít nhất 5 commit trong log
Mẹo: Làm từng bước một, không làm tất cả rồi mới commit!
💡 Mẹo & Lỗi thường gặp
1. Lỗi: "nothing to commit, working tree clean"
Nguyên nhân: Bạn chưa add file hoặc chưa có thay đổi nào
Giải pháp:
# Kiểm tra trạng thái
git status
# Nếu có file "Untracked" hoặc "Changes not staged", add chúng trước
git add .
git commit -m "Commit message"2. Quên message khi commit
Giải thích:
# Lệnh này sẽ mở editor để bạn nhập message
git commit
# Hoặc dùng -m ngay:
git commit -m "Message của bạn"Mẹo: Luôn dùng -m để tránh mở editor không mong muốn
3. Commit nhầm file không mong muốn
Ví dụ: Commit cả file .env chứa password
Giải pháp:
- Sửa ngay bằng cách unstage file (sẽ học ở bài sau)
- Hoặc dùng
.gitignoređể bỏ qua file (sẽ học ở bài sau)
Phòng tránh: Luôn check git status trước khi commit!
4. Commit message quá dài
Nguyên tắc:
- Dòng đầu: Dưới 50 ký tự, tóm tắt ngắn gọn
- Dòng trống
- Body (nếu cần): Giải thích chi tiết hơn, mỗi dòng dưới 72 ký tự
Ví dụ tốt:
Thêm tính năng tìm kiếm sản phẩm
- Tạo component SearchBox
- Tích hợp với API backend
- Thêm loading state và error handling5. Không biết đã commit gì trong quá khứ
Mẹo: Dùng git log với các tùy chọn:
# Xem log gọn gàng
git log --oneline --graph --all
# Xem log với tác giả và ngày
git log --pretty=format:"%h - %an, %ar : %s"
# Xem log của file cụ thể
git log -- index.html6. Commit quá nhiều lần cho một tính năng
Vấn đề:
commit 1: "update"
commit 2: "fix"
commit 3: "update again"
commit 4: "finally done"Giải pháp: Nên gom lại thành 1 commit có nghĩa:
commit 1: "Thêm tính năng đăng nhập với validation"Cách gom commit: Sẽ học ở bài về git rebase (bài 6)
Áp dụng vào làm việc nhóm:
- Commit thường xuyên (mỗi 30 phút - 1 giờ) để không mất code
- Nhưng trước khi push, xem lại và gom các commit liên quan lại
- Mỗi commit nên là một "đơn vị công việc" hoàn chỉnh, có thể test được
Kết luận: Nắm vững các lệnh cơ bản này là nền tảng để học các tính năng Git nâng cao hơn. Hãy thực hành nhiều để quen tay!
Bài tiếp theo: 04. Hiểu về Working Directory và Staging Area - Hiểu sâu hơn về cách Git quản lý file