git add, commit và push khác nhau thế nào?
Trả lời ngắnBa bước, ba nơi khác nhau. add chọn thay đổi nào sẽ được lưu. commit lưu thật, nhưng chỉ trên máy bạn. push mới đưa lên GitHub để người khác và CI nhìn thấy. Thiếu bước nào thì bước sau không có gì để làm.
Bảng so sánh
| git add | git commit | git push | |
|---|---|---|---|
| Việc chính | Chọn file/thay đổi đưa vào “khung hình” | Chụp ảnh khung hình đó, kèm lời ghi chú | Gửi các ảnh đã chụp lên kho chung |
| Kết quả nằm ở đâu | Vùng chờ (staging) trên máy bạn | Lịch sử Git trên máy bạn | Kho chung trên mạng (GitHub, GitLab…) |
| Người khác thấy chưa | Chưa | Chưa | Rồi |
| CI chạy chưa | Chưa | Chưa | Rồi — push là tín hiệu để CI thức dậy |
| Làm lại được không | Dễ — git restore --staged | Dễ nếu chưa push — git commit --amend | Khó — đã lên là người khác có thể đã kéo về |
| Quên bước này thì | commit báo “nothing to commit” | push báo “Everything up-to-date” | GitHub vẫn là bản cũ, đồng đội tưởng bạn chưa làm gì |
💡 Cách nhớ
Nhớ theo trình tự: add = chọn · commit = chụp · push = nộp. Chụp mà không nộp thì ảnh vẫn nằm trong máy.Chọn cái nào?
- Nếu Gõ
git commitmà Git bảo “nothing to commit”→ Quên add — chạygit add -Arồi commit lại - Nếu Đã commit, mở GitHub không thấy gì→ Quên push — chạy
git push - Nếu Push bị từ chối (rejected)→ Kho chung đã có commit mới —
git pullrồi push lại - Nếu Lỡ commit sai lời, chưa push→
git commit --amend -m "lời mới"
⚠ Bẫy thường gặp
Bẫy phổ biến nhất của người mới: commit đều đặn, cảm giác rất an toàn, nhưng cả tuần không push. Ổ cứng hỏng là mất sạch, và đồng đội không hề biết bạn đang làm gì. Commit là bảo hiểm trên máy bạn; push mới là bảo hiểm thật.
Câu hỏi hay gặp
- Tại sao Git không gộp add và commit làm một?
- Để bạn chọn được <em>một phần</em> thay đổi cho mỗi commit. Sửa lỗi và đổi tên biến trong cùng buổi làm việc có thể thành hai commit riêng, sau này tìm lỗi dễ hơn. Khi mới học cứ dùng <code>git add -A</code> là đủ.
- Có cần push sau mỗi commit không?
- Không bắt buộc, nhưng nên push ít nhất cuối mỗi buổi làm việc. Nhiều commit nhỏ rồi push một lần cũng bình thường.
- Push rồi có rút lại được không?
- Rút bằng cách tạo commit mới đảo ngược (<code>git revert</code>), không xoá lịch sử. Xoá lịch sử đã push (<code>push --force</code>) chỉ nên làm trên nhánh của riêng bạn.