- Giải thích chi tiết về thư mục
.git được tạo khi chạy git init
- Thư mục
.git bao gồm nhiều tệp và thư mục như config, HEAD, hooks, objects, refs
- Tệp văn bản
config chứa cấu hình git của kho lưu trữ hiện tại, cùng các thiết lập cơ bản như tác giả và chế độ tệp
- Tệp
HEAD chứa head hiện tại của kho lưu trữ, trỏ tới nhánh mặc định. Tùy theo nhánh mặc định được đặt là gì mà có thể là master hoặc main
- Thư mục
hooks chứa mọi script có thể chạy trước và sau các thao tác của git
- Thư mục
objects chứa dữ liệu về các tệp và commit của kho lưu trữ
- Thư mục
refs lưu các tham chiếu hoặc con trỏ trỏ tới nhánh và thẻ
- Khi một tệp được thêm vào kho lưu trữ, tệp
index sẽ được cập nhật và các thư mục cùng tệp mới sẽ được thêm vào thư mục objects
- Tệp mới trong thư mục
objects chứa loại, kích thước và dữ liệu của tệp được thêm vào, còn tên tệp được lấy từ SHA-1 của nội dung
- Khi một tệp được commit, nhiều thay đổi sẽ xảy ra như tạo tệp mới tên
COMMIT_EDITMSG chứa thông điệp commit và thêm đối tượng mới vào thư mục objects
- Trong git, việc tạo nhánh là một quá trình đơn giản gồm thêm một tệp mới trong thư mục
refs/heads với tên nhánh và ID của commit mới nhất
- Việc checkout nhánh bao gồm cập nhật tệp
.git/HEAD để nó trỏ tới nhánh đang được checkout
- Việc hợp nhất nhánh có thể được thực hiện theo ba cách:
fast forward merge, rebase merge, hoặc tạo một merge commit riêng
- Khi kho lưu trữ được push, toàn bộ nội dung trong thư mục
objects và mọi nhánh cùng thẻ dưới refs được push một cách tường minh sẽ được gửi tới một kho git khác
1 bình luận