IT nói tiếng người
Nền tảng

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 addgit commitgit push
Việc chínhChọ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 ở đâuVùng chờ (staging) trên máy bạnLịch sử Git trên máy bạnKho chung trên mạng (GitHub, GitLab…)
Người khác thấy chưaChưaChưaRồi
CI chạy chưaChưaChưaRồi — push là tín hiệu để CI thức dậy
Làm lại được khôngDễ — git restore --stagedDễ nếu chưa push — git commit --amendKhó — đã 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?

⚠ 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.

Đọc kỹ từng thuật ngữ

← Xem các bảng so sánh khác