Commit là gì trong Git?

Thảo luận trong 'Git' bắt đầu bởi PeaJaStr, 27/3/15.

  1. PeaJaStr

    PeaJaStr Moderator Staff Member

    Tham gia:
    27/3/15
    Bài viết:
    193
    "Thích" đã nhận:
    54
    Điểm nhận Cup:
    28
    Giới tính:
    Nam
    Khi làm việc với Git chúng ta thường hay nói về commit trong các thao tác như merge, rebase, cherry-pick… Để làm chủ và hiểu được sức mạnh thực sự của Git trước tiên chúng ta cần phải hiểu khái niệm một commit là gì. Để trả lời được câu hỏi này hãy xem xét đến cách lưu trữ dữ liệu trong Git.

    Sau khi khởi tạo git bằng lệnh “git init” trong một thư mục, Git sẽ tạo ra một thư mục .git lưu trữ toàn bộ database và các thao tác đối với các dữ liệu này. Đây là list các thư mục con và các file trong .git

    HEAD, branches/, config, description, hooks/ index, info/, objects/, refs/

    trong đó thư mục objects/ là thư mục lưu trữ tất cả nội dung của database bao gồm 4 object cơ bản:

    • tree : tương đương như một directory
    • blob: tương đương một file
    • commit
    • tag
    mỗi một object trong git được định danh bởi một id duy nhất dài 40 ký tự mã hexa(160 bit) dựa vào SHA-1 hash. Cách tổ chức lưu trữ dữ liệu trong git cũng giống như cách tổ chức file trong linux nhưng đơn giản hơn

    Dưới đây là hình ảnh minh họa cách lưu trữ dữ liệu trong Git.





    [​IMG]



    [​IMG]





    Nhìn vào hình vẽ chúng ta có thể thấy mỗi một commit có 2 con trỏ, một con trỏ trỏ đến thư mục gốc tree, và một con trỏ trỏ đến commit cha của nó. trong đó tree sẽ tham chiếu đến tất cả các thư mục con và các file con của nó, như vậy có thể xem như mỗi một commit trong Git lưu trữ toàn bộ dữ liệu của thư mục(snapshot) chứ không phải là chỉ lưu trữ những thay đổi giữa 2 commit. Dưới đây là một số lệnh để thao tác với Git

    • find .git/objects -type f: Hiển thị các object trong thư mục Git
    • git cat-file -p “object_id”: Đọc nội dung của object
    • git cat-file -t “object_id”: xem kiểu object
    • git hash-object -w “filename”: add index cho object (lệnh git add override lệnh này)
    • git log –pretty=oneline –graph –all: hiển thị history của tất cả các branch, branch chẳng qua cũng chỉ là một con trỏ tham chiếu đến một commit bất kỳ mà thôi
    • git count-objects -v: Đếm tổng số tất cả các object trong .git/object
    Các bạn có thể tự tao một project sử dụng Git(merge, rebase…) và kiểm tra xem mọi thứ thực sự diễn ra bên trong Git như thế nào thông qua các câu lệnh trên. Chi tiết và cụ thể hơn được viết trong chương 9 git book.

    Tài liệu tham khảo

    1. http://en.wikipedia.org/wiki/Git_(software)

    2. http://git-scm.com/book/en/Git-Internals-The-Refspec

    Nguồn: framgia
     

    Bình Luận Bằng Facebook

  2. linhoen12

    linhoen12 Member

    Tham gia:
    9/1/18
    Bài viết:
    48
    "Thích" đã nhận:
    0
    Điểm nhận Cup:
    6
    Giới tính:
    Nữ
    Nến thơm Thần Tài - Phật Thủ - Hoa Sen
    Thắp Sáng Tài Vận - May Mắn Cả Năm
    Năm Mậu Tuất sắp đến, Ban thờ nên có một cặp Nến Phật Thủ phong thủy, một cặp nến Thần Tài Hoa Sen không chỉ hoàn thiện ngũ hành âm dương mà còn mang đến không khí Tết ấm cúng, cầu chúc một năm may mắn, phát tài.
    Sản Phẩm:
    Trọng lượng:
    Hoa Sen Thần Tài: 1kg/bộ (Giá 250k)
    Phật thủ: 1,4kg/cặp (Giá 230k)
    Hoa Sen: 1kg/cặp (Giá 160k)
    Nến có thời gian cháy khoảng 60-72h(tương đương khoảng 3 ngày)
    Khi thắp nến tỏa mùi thơm giống mùi hương Phật thủ
    Tim nến được làm từ sợi bông tự nhiên không có chì và không độc hại
    Có giá sĩ > 5 cặp
    Liên hệ: 0902.363.000
    Facebook: https://www.facebook.com/dochungtet/
    Shopee: https://shopee.vn/Nến-Thần-Tài-Hoa-Sen-Phật-Thủ-i.13352045.819526963
    Địa chỉ: 97/101 Trần Hưng Đạo P6 Q5 HCM

    [​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG]
     

Share This Page