© 2026 Laravel

Git Internals: Tại sao Git là một Snapshot Machine?

2 phút đọc
#git #internals #architecture

Mục lục bài viết

Sử dụng các mục để điều hướng nhanh

#1. Bản chất: Git Objects

Git không lưu diff (thay đổi). Mỗi khi bạn commit, Git chụp một tấm ảnh toàn bộ project (Snapshot).

  • Blob: Nội dung file.
  • Tree: Cấu trúc thư mục (liên kết các Blob).
  • Commit: Pointer trỏ tới Root Tree, chứa thông tin tác giả, thời gian và Pointer đến commit trước đó (Parent).

#2. Tại sao Architect cần hiểu?

Vì Git thực chất là một Directed Acyclic Graph (DAG). Mỗi nhánh chỉ là một “cái tên” (Label) trỏ đến một Commit ID cụ thể. Hiểu điều này giúp bạn làm chủ rebase, reset, cherry-pick mà không sợ mất dữ liệu.

#3. Câu hỏi nhanh

Q: git branch thực chất làm gì? A: Nó chỉ tạo ra một file text nhỏ trong .git/refs/heads/ chứa chuỗi 40 ký tự (Commit Hash). Đó là lý do tạo branch cực kỳ nhanh. Q: git checkout vs git switch? A: switch được sinh ra để tách biệt mục đích: Switch branch chỉ là đổi nhánh, Checkout dùng cho cả branch và restore file.

Bài viết liên quan