Supplement · Git Engineering · 07-theory-01-object-model-refs-reflog

Object database, refs và reflog

Commit là snapshot có metadata và parent; branch chỉ là ref di chuyển tới một commit.

Bốn loại object

Blob chứa bytes, không chứa tên file. Tree ánh xạ tên và mode tới blob/tree. Commit trỏ tree gốc, parent(s), author/committer và message. Annotated tag là object có tagger, message và có thể có chữ ký. Object ID là hash của type, length và content; cùng nội dung tạo cùng blob.

Refs và HEAD

refs/heads/*, refs/tags/*, remote-tracking refs và special refs là tên dễ nhớ trỏ object ID. Symbolic HEAD thường trỏ branch; detached HEAD trỏ commit trực tiếp. Ref update dùng lock/transaction để tránh ghi đè cạnh tranh.

Reachability và reflog

Object reachable nếu đi từ root như ref qua commit/tree. Reflog là nhật ký thay đổi ref cục bộ, không được push; nó thường cứu commit sau reset/rebase nhưng có expiry. Vì vậy reflog là recovery window, không phải backup.

Correctness: object hash chứng minh nội dung khớp ID trong mô hình hash, không chứng minh danh tính tác giả, review hay build provenance.
Pro Git: Git Objects · Git glossary · git-reflog · git-update-ref
← Mục lụcChương 02 →