Một vài tài liệu tham khảo tốt khác về các chủ đề đó:
Tôi sử dụng chỉ số như một điểm kiểm tra .
Khi tôi chuẩn bị thực hiện một thay đổi có thể trở nên tồi tệ - khi tôi muốn khám phá một số hướng mà tôi không chắc mình có thể làm theo hay thậm chí đó có phải là một ý tưởng hay không, chẳng hạn như tái cấu trúc theo yêu cầu về mặt khái niệm hoặc thay đổi loại đại diện - Tôi kiểm tra công việc của tôi vào chỉ mục. Nếu đây là thay đổi đầu tiên tôi thực hiện kể từ lần cam kết cuối cùng, thì tôi có thể sử dụng kho lưu trữ cục bộ làm điểm kiểm tra, nhưng thường thì tôi có một thay đổi về mặt khái niệm mà tôi đang thực hiện như một bộ các bước nhỏ. Tôi muốn kiểm tra điểm sau mỗi bước, nhưng lưu lại cam kết cho đến khi tôi quay lại làm việc, kiểm tra mã.
Ghi chú:
các không gian làm việc là cây thư mục của (nguồn) các tập tin mà bạn nhìn thấy và chỉnh sửa.
Các chỉ số là một duy nhất, lớn, tập tin nhị phân trong <baseOfRepo>/.git/index
, trong đó liệt kê tất cả các file trong ngành hiện tại, họ sha1 checksums, tem thời gian và tên tập tin - nó không phải là một thư mục với một bản sao của tập tin trong nó.
Các kho lưu trữ địa phương là một thư mục ẩn ( .git
) bao gồm một objects
thư mục chứa tất cả các phiên bản của tất cả các tập tin trong repo (chi nhánh và bản sao của chi nhánh từ xa địa phương) như là một tập tin "blob" nén.
Đừng nghĩ bốn 'đĩa' được thể hiện trong hình trên là các bản sao riêng biệt của các tệp repo.
Chúng cơ bản được đặt tên tham chiếu cho các cam kết Git. Có hai loại refs chính: tags và head.
- Thẻ là các tham chiếu cố định đánh dấu một điểm cụ thể trong lịch sử, ví dụ v2.6,29.
- Ngược lại, người đứng đầu luôn được di chuyển để phản ánh vị trí hiện tại của phát triển dự án.
(lưu ý: như nhận xét của Timo Huovinen , những mũi tên đó không phải là thứ mà cam kết chỉ ra, đó là thứ tự quy trình công việc , về cơ bản hiển thị mũi tên là 1 -> 2 -> 3 -> 4
nơi 1
cam kết đầu tiên và 4
là lần cuối cùng)
Bây giờ chúng tôi biết những gì đang xảy ra trong dự án.
Nhưng để biết những gì đang xảy ra ngay tại đây, ngay bây giờ có một tài liệu tham khảo đặc biệt gọi là CHÍNH. Nó phục vụ hai mục đích chính:
- nó cho Git biết cam kết lấy tệp từ khi bạn thanh toán và
- nó cho Git biết nơi đặt cam kết mới khi bạn cam kết.
Khi bạn chạy, git checkout ref
nó trỏ HEAD
đến ref bạn đã chỉ định và trích xuất các tệp từ nó. Khi bạn chạy git commit
nó sẽ tạo ra một đối tượng cam kết mới, trở thành một đứa con của hiện tại HEAD
. Thông thường HEAD
chỉ vào một trong những cái đầu, vì vậy mọi thứ hoạt động tốt.
HEAD
là cam kết ở đầu chi nhánh hiện tại. Nếu bạn vừa kiểm tra chi nhánh, tức là không có tệp sửa đổi, thì nội dung của nó phù hợp với cây làm việc. Ngay khi bạn sửa đổi bất cứ điều gì, nó không còn phù hợp.