5 phút đọc

Commit

Commit

Một commit là một bản ghi vĩnh viễn trong lịch sử Git — một "ảnh chụp" trạng thái dự án tại một thời điểm.

Một commit gồm gì

  • Snapshot: ảnh chụp toàn bộ trạng thái dự án, không phải chỉ phần khác biệt.
  • SHA-1: mã 40 ký tự sinh từ nội dung commit, là định danh duy nhất và bất biến.
  • Parent: con trỏ tới commit ngay trước. Chuỗi parent nối các commit thành lịch sử.
  • Metadata: tác giả, thời gian, commit message.
git show a1b2c3d    # xem chi tiết một commit qua SHA (vài ký tự đầu là đủ)

Bất biến (immutable)

Vì SHA sinh từ nội dung, đổi bất kỳ thứ gì trong commit (file, message, parent) sẽ tạo ra một SHA khác — tức một commit khác. Bạn không "sửa" được một commit cũ; các lệnh như --amend thực chất tạo commit mới thay thế.

Snapshot, không phải diff

Git lưu snapshot đầy đủ ở mỗi commit (file không đổi thì tham chiếu lại để tiết kiệm). Phần "diff" bạn thấy là Git tính ra khi so sánh hai snapshot.

Cách nhớ nhanh

Commit = ảnh chụp + SHA bất biến + con trỏ parent. SHA sinh từ nội dung nên commit không thể bị sửa âm thầm; muốn đổi là tạo commit mới.