Skip to content

4. Status & Log (Inspection)

IMPORTANT

GOAL: Luôn biết chính xác mình đang đứng ở đâu và lịch sử dự án diễn ra như thế nào. "Code mù" (Coding without awareness) là cấm kỵ.

4.1 Kiểm tra trạng thái (git status)

Đây là lệnh bạn nên gõ 100 lần mỗi ngày. Trước khi add, trước khi commit, trước khi push -> git status.

bash
git status

Cách đọc output:

  1. Untracked files: File mới tạo, Git chưa biết tới. (Cần git add).
  2. Changes not staged for commit: File đã sửa nhưng chưa đưa vào Khu vực chờ. (Cần git add).
  3. Changes to be committed: File đã nằm trong Khu vực chờ, sẵn sàng commit. (Cần git commit).
  4. Clean: Không có gì thay đổi.

4.2 Xem lịch sử (git log)

Lệnh git log mặc định rất khó đọc và dài dòng.

The "Pro" Log Alias

Kỹ sư chuyên nghiệp không dùng git log trần. Họ setup alias để nhìn toàn cảnh graph.

Hãy chạy lệnh này một lần duy nhất để cấu hình alias git lg:

bash
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

Từ giờ, hãy dùng:

bash
git lg

Hoặc:

bash
git lg -5  # Xem 5 commit gần nhất

Bạn sẽ thấy:

  • Graph: Cây lịch sử rẽ nhánh/gộp nhánh trực quan.
  • Decorate: Biết branch nào (main, dev, HEAD) đang ở đâu.
  • Time: Thời gian tương đối (2 hours ago) dễ đọc hơn ngày tháng cụ thể.
  • Author: Ai là người commit.

TIP

Đừng bao giờ làm việc với Git mà không nhìn thấy "Graph". Nó giúp bạn tránh những sai lầm ngớ ngẩn khi merge hoặc rebase.

🧠 Quiz

Câu 1: Trạng thái "Changes not staged for commit" trong git status nghĩa là gì?

  • [ ] A) File mới tạo, Git chưa biết tới
  • [x] B) File đã được sửa nhưng chưa được git add vào staging area
  • [ ] C) File đã sẵn sàng để commit
  • [ ] D) File đã bị xóa khỏi repository

💡 Giải thích: "Changes not staged for commit" nghĩa là file đã được Git track từ trước và có thay đổi mới, nhưng chưa được đưa vào staging area bằng git add. Cần git add trước khi commit.

Câu 2: Tại sao kỹ sư chuyên nghiệp thường setup alias git lg thay vì dùng git log mặc định?

  • [ ] A) Vì git log không hoạt động trên Windows
  • [ ] B) Vì git lg commit nhanh hơn
  • [x] C) Vì alias hiển thị graph trực quan với màu sắc, giúp nhìn toàn cảnh branch và lịch sử
  • [ ] D) Vì git log bị deprecated từ Git 2.0

💡 Giải thích: git log mặc định hiển thị dài dòng và khó đọc. Alias git lg kết hợp --graph --oneline --color để hiển thị cây commit trực quan, giúp nhanh chóng nắm bắt luồng branch và merge.

Câu 3: Lệnh git diff (không có tham số) so sánh những gì?

  • [x] A) Working Directory với Staging Area (những thay đổi chưa staged)
  • [ ] B) Staging Area với Repository (những thay đổi đã staged)
  • [ ] C) Local repository với Remote repository
  • [ ] D) Branch hiện tại với branch main

💡 Giải thích: git diff không tham số so sánh Working Directory với Staging Area, tức hiển thị những thay đổi chưa được git add. Để xem thay đổi đã staged, dùng git diff --staged.