Lệnh Git cơ bản: init, add, commit, status, log
📚 Git & GitHub Series (Bài 3/15) — Đã cài đặt Git ở Bài 2, giờ là lúc thực hành các lệnh Git cơ bản để ghi lại lịch sử dự án thật sự.
Nắm vững lệnh Git cơ bản là bước biến lý thuyết ở Bài 1 về version control thành kỹ năng thực tế. Chỉ với năm lệnh — init, add, commit, status, log — bạn đã có thể quản lý phiên bản cho bất kỳ dự án nào. Bài này hướng dẫn từng bước qua một ví dụ chạy thật, kèm diff và cách viết commit message chuẩn.
Tạo repository với git init
Mở terminal, tạo một thư mục dự án và khởi tạo Git:
mkdir du-an-dau-tien
cd du-an-dau-tien
git init
Lệnh git init tạo một thư mục ẩn .git chứa toàn bộ cơ sở dữ liệu phiên bản. Từ giờ Git sẽ theo dõi mọi thay đổi trong thư mục này. Bạn chỉ chạy git init một lần cho mỗi dự án.
Kiểm tra trạng thái với git status
Tạo một file rồi xem Git nói gì:
echo "# Dự án đầu tiên" > README.md
git status
Git báo README.md đang là Untracked (chưa được theo dõi). Lệnh git status là lệnh bạn sẽ gõ nhiều nhất — nó cho biết file nào đã sửa, file nào đang ở staging, nhánh hiện tại. Khi bối rối, cứ git status.
Đưa thay đổi vào staging với git add
Nhớ lại mô hình ba khu vực ở Bài 1: để commit, trước hết phải đưa thay đổi vào staging area:
git add README.md
Một vài biến thể hữu ích:
git add .— thêm mọi thay đổi từ thư mục hiện tại.git add -A— thêm mọi thay đổi trong toàn repo.git add -p— thêm từng phần của file (xét duyệt từng đoạn), rất hữu ích khi muốn tách commit gọn gàng.
Lưu snapshot với git commit
Khi đã staging xong, lưu lại thành một mốc lịch sử:
git commit -m "Thêm README cho dự án"
Tham số -m truyền thông điệp commit trực tiếp. Mỗi commit được Git gán một mã băm SHA duy nhất (ví dụ a1b2c3d), gắn tên/email bạn đã cấu hình ở Bài 2, và thời gian.
Cách viết commit message tốt
| Nên | Không nên |
|---|---|
Sửa lỗi tính tổng giỏ hàng | fix |
Thêm trang liên hệ | update code |
Xóa file cấu hình thừa | asdfgh |
Quy ước phổ biến: dòng đầu dưới 50 ký tự, dùng động từ mệnh lệnh, mô tả "làm gì". Một lịch sử commit rõ ràng là tài sản quý khi cần truy vết lỗi.
Xem thay đổi với git diff
Trước khi commit, bạn thường muốn xem mình đã sửa gì:
git diff # thay đổi chưa staging
git diff --staged # thay đổi đã staging, chuẩn bị commit
Dòng bắt đầu bằng + là nội dung thêm vào, - là nội dung bị xóa. Đọc diff thành thạo giúp bạn không commit nhầm.
Xem lịch sử với git log
Để xem toàn bộ các commit đã tạo:
git log
git log --oneline # gọn, mỗi commit một dòng
git log --oneline --graph # hiển thị dạng cây nhánh
git log --oneline là dạng tôi dùng nhiều nhất — nó cho cái nhìn nhanh về lịch sử. Mỗi dòng gồm mã SHA rút gọn và thông điệp commit.
Luồng làm việc với lệnh Git cơ bản hằng ngày
Gộp lại, vòng lặp công việc điển hình với Git là:
- Sửa file trong dự án.
git status— xem mình đã đụng vào gì.git diff— xem chi tiết thay đổi.git add <file>— chọn thay đổi đưa vào commit.git commit -m "..."— lưu lại.- Lặp lại.
Đây chính là nhịp điệu bạn lặp đi lặp lại mỗi ngày khi lập trình — kể cả khi viết một bài blog tĩnh như blog tạo bằng Zola.
File .gitignore — bỏ qua những thứ không cần
Không phải file nào cũng nên đưa vào Git (ví dụ thư mục node_modules, file bí mật, file build). Tạo file .gitignore ở gốc dự án:
node_modules/
.env
*.log
dist/
Git sẽ tự động bỏ qua các đường dẫn này. Đây là thói quen quan trọng để không vô tình commit dữ liệu nhạy cảm — chủ đề chúng ta sẽ đào sâu ở Bài 15 về bảo mật.
Tóm lại
Bạn vừa nắm trọn vòng đời cơ bản của lệnh Git cơ bản: init để khởi tạo, status/diff để quan sát, add để chuẩn bị, commit để lưu, và log để xem lại. Đây là 80% công việc Git hằng ngày.
Ở Bài 4, chúng ta bước sang một sức mạnh thật sự của Git: làm việc với branch (nhánh) — cách phát triển nhiều tính năng song song mà không giẫm chân nhau.
Tham khảo & Nguồn dữ liệu
1. Liên kết bên ngoài được sử dụng trong bài viết
2. Liên kết nội bộ liên quan
3. Bản quyền & Ghi nguồn
Một phần dữ liệu trong bài viết được tham khảo từ Git Scm (git-scm.com). Mọi thương hiệu, tên sản phẩm và tài liệu gốc thuộc quyền sở hữu của chủ sở hữu tương ứng. Bài viết chỉ trích dẫn, tổng hợp và phân tích — không nhằm thay thế tài liệu chính thức.
Câu hỏi thường gặp
Các lệnh Git cơ bản nhất cần nhớ là gì?
git add . và git add -A khác nhau thế nào?
Làm sao viết commit message tốt?
💬 BÌNH LUẬN
Đăng nhập GitHub để comment. Hỗ trợ markdown, reaction, reply.