Mục Lục
1. Giới thiệu
Khi bạn thực hiện một commit trong Git, thông tin về commit được lưu trữ trong thư mục .git
của repository. Cấu trúc và vị trí lưu trữ của commit trong Git được tổ chức như sau:
2. Thư mục .git/objects
- Vị trí:
.git/objects
- Chức năng: Đây là nơi Git lưu trữ tất cả các đối tượng (objects) của repository, bao gồm commits, trees, blobs, và tags. Các đối tượng này được lưu trữ theo định dạng hash SHA-1, và thư mục
objects
chứa các tệp và thư mục con tương ứng với các hash này.
3. Cấu trúc của Commit
Một commit trong Git được lưu trữ dưới dạng một đối tượng (object) trong thư mục .git/objects
. Đây là cách Git tổ chức và lưu trữ các commit:
- Đối tượng Commit (Commit Object)
- Vị trí:
objects/<first-two-characters-of-sha1>/<remaining-characters-of-sha1>
- Chức năng: Mỗi commit được lưu trữ dưới dạng một đối tượng trong thư mục
objects
. Tên tệp của commit được xác định bằng hash SHA-1 của đối tượng commit. Hash này là một chuỗi 40 ký tự đại diện cho nội dung của commit. - Cấu trúc: Đối tượng commit lưu trữ thông tin về:
- Commit Metadata: Thông tin về tác giả (author), người cam kết (committer), và ngày giờ cam kết.
- Message: Thông điệp commit.
- Tree Object: Một đối tượng tree mà commit trỏ tới, chứa thông tin về cấu trúc và trạng thái của thư mục khi commit được thực hiện.
- Parent Commits: Các commit cha, nếu commit hiện tại là một commit không phải là commit gốc.
- Vị trí:
4. Ví dụ về Cấu trúc Commit
Nếu bạn có một commit với hash SHA-1 là abc1234
, nó sẽ được lưu trữ trong tệp có đường dẫn sau:
.git/objects/ab/c1234
5. Tóm tắt
- Commit Object: Được lưu trữ trong thư mục
.git/objects
dưới dạng một tệp nhị phân với tên tệp dựa trên hash SHA-1 của đối tượng commit. - Cấu trúc Commit: Bao gồm metadata, message, tree object, và các commit cha.
Việc hiểu cấu trúc lưu trữ của commit trong Git giúp bạn nắm vững cách Git quản lý và truy xuất lịch sử mã nguồn, đồng thời giúp bạn thao tác hiệu quả hơn với các đối tượng commit trong dự án của mình.
Xin chào,
Bài viết này sử dụng AI ChatGPT để viết sau đó được lựa chọn, biên tập lại nội dung, chỉ một phần nhỏ các bài là tôi tự viết. Nội dung thể hiện ý chí cá nhân về các vấn đề, giải pháp. Tôi lưu tại website này để học, tra cứu và chia sẻ.
Tôi là Minh, sống tại Hà Nội, kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Các ngôn ngữ yêu thích của tôi là Swift, Objective-C, Java, Kotlin, .NET, HTML, JavaScript, CSS, Bootstrap, jQuery, AngularJS, Angular…
Các bạn có thể tải app của tôi trên App Store hoặc Google Play:
QuestionBank-Ôn thi vào 10: phiên bản iOS, phiên bản Android
TypingTest by QuestionBank: phiên bản iOS, phiên bản Android
Xin cảm ơn,
Minh