Giao diện
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 statusCách đọc output:
- Untracked files: File mới tạo, Git chưa biết tới. (Cần
git add). - Changes not staged for commit: File đã sửa nhưng chưa đưa vào Khu vực chờ. (Cần
git add). - Changes to be committed: File đã nằm trong Khu vực chờ, sẵn sàng commit. (Cần
git commit). - 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 lgHoặc:
bash
git lg -5 # Xem 5 commit gần nhấtBạ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 addvà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ầngit addtrướ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 logkhông hoạt động trên Windows - [ ] B) Vì
git lgcommit 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 logbị deprecated từ Git 2.0
💡 Giải thích:
git logmặc định hiển thị dài dòng và khó đọc. Aliasgit lgkế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 diffkhông tham số so sánh Working Directory với Staging Area, tức hiển thị những thay đổi chưa đượcgit add. Để xem thay đổi đã staged, dùnggit diff --staged.