Commit đầu tiên và vòng đời của file
Your First Commit and the File Lifecycle
Commit là hành động lưu lại một ảnh chụp của dự án vào lịch sử. Bài này hướng dẫn tạo commit đầu tiên bằng git add và git commit, đồng thời nắm vòng đời mà mỗi file đi qua.
git add: đưa file vào staging
git add đưa thay đổi từ working tree vào staging area, đánh dấu chúng sẽ nằm trong commit kế tiếp:
git add hello.txt # add một file cụ thể
git add src/ # add cả một thư mục
git add . # add mọi thay đổi trong thư mục hiện tại
Sau khi add, chạy git status sẽ thấy file chuyển sang mục "changes to be committed".
git commit -m: ghi vào lịch sử
git commit lấy mọi thứ đang ở staging area và ghi thành một commit mới trong lịch sử. Cờ -m cho phép viết commit message ngay trên dòng lệnh:
git commit -m "Add file hello chào người dùng"
Một commit gồm: ảnh chụp các file đã staged, tác giả, thời gian và message. Sau khi commit, các thay đổi đó được lưu vĩnh viễn trong .git.
# Luồng đầy đủ cho commit đầu tiên
git init
git add hello.txt
git commit -m "Initial commit"
Vòng đời của một file
Một file đi qua các trạng thái sau:
- Untracked: file mới, Git chưa từng theo dõi. Chưa nằm trong lịch sử.
- Modified: file đã được theo dõi nhưng vừa bị sửa, thay đổi chưa được add.
- Staged: thay đổi đã được
git add, sẵn sàng cho commit kế tiếp. - Committed: thay đổi đã được ghi vào lịch sử; file "sạch", không còn thay đổi chờ xử lý.
| Trạng thái | Ý nghĩa | Lệnh chuyển tiếp |
|---|---|---|
| Untracked | File mới Git chưa theo dõi | git add → staged |
| Modified | File đã theo dõi, vừa sửa | git add → staged |
| Staged | Đã add, chờ commit | git commit → committed |
| Committed | Đã lưu vào lịch sử | (sửa tiếp → modified) |
Sửa lại một file đã committed sẽ đưa nó về modified, và vòng lặp add → commit lặp lại.
Viết commit message tốt
Commit message là lời nhắn cho chính bạn và đồng đội trong tương lai. Một message tốt nên:
- Dùng dòng tiêu đề ngắn gọn (khoảng 50 ký tự), viết ở thể mệnh lệnh: "Add login form", "Fix lỗi tràn bộ nhớ".
- Giải thích vì sao thay đổi, không chỉ mô tả lại code đã đổi gì.
- Tách phần thân (body) bằng một dòng trống nếu cần mô tả chi tiết hơn.
Add validation cho form đăng ký
Kiểm tra email và độ dài mật khẩu trước khi gửi request
để tránh tạo tài khoản với dữ liệu không hợp lệ.
Lưu ý
Tránh message vô nghĩa như "update", "fix", "abc". Sáu tháng sau khi cần dò lỗi qua lịch sử, một message rõ ràng sẽ tiết kiệm cho bạn rất nhiều thời gian.
Mẹo
Muốn kèm phần thân dài mà không dùng -m, chỉ cần chạy git commit (không cờ). Git sẽ mở editor để bạn gõ tiêu đề và body đầy đủ.
Trọng tâm thi
Nhớ vòng đời: untracked/modified → (git add) → staged → (git commit) → committed. git add chỉ đưa vào staging; chỉ git commit mới thực sự ghi vào lịch sử.
Tóm tắt
git addđưa thay đổi vào staging area;git commit -mghi staging thành một commit trong lịch sử.- Vòng đời file: untracked/modified → staged (
git add) → committed (git commit); sửa tiếp lại về modified. - Mỗi commit lưu ảnh chụp file đã staged, kèm tác giả, thời gian và message.
- Commit message tốt: tiêu đề ngắn thể mệnh lệnh, giải thích vì sao, body cách bằng dòng trống.
- Chạy
git commitkhông cờ để mở editor viết message dài.