Peta dunia

 

EN: Read in English

Dunia 10: Git Mendalam

Objek dan hash

Anda akan belajar: apa yang Git simpan sebenarnya, dan cara setiap bahagian dapat nama.

Teks BM belum disemak oleh penutur asli.

Masalahnya

Kedai anda ada 3 commit (titik simpan). style.css tak pernah berubah. Adakah Git simpan fail itu 3 kali?

Pilih satu jawapan.

Tengok

git cat-file -p HEAD cetak commit terbaru: id tree, id parent, pengarang, committer dan mesej Add opening hours. Output terminal: $ git cat-file -p HEAD tree f531e32baf337b201dd21faa7c677933cd9421ea parent 1a02b3e07c19a715c61978990bddc1d32468eaa7 author You <you@example.com> 1793322240 +0800 committer You <you@example.com> 1793322240 +0800 Add opening hours

Git simpan semuanya sebagai objek (object) (object): Satu benda yang Git simpan: blob, tree, commit atau tag. Namanya ialah hash isinya. (object). git cat-file -p HEAD buka commit terbaru. Ia tunjuk ke satu tree: Objek yang senaraikan satu folder: nama yang tunjuk ke blob (fail) dan tree (folder). (senarai fail) dan satu parent (commit sebelumnya).

Cuba

blob: Objek yang simpan isi satu fail. Tiada nama, isi sahaja. ialah isi satu fail. Buka commit, kemudian tree, kemudian css. Cari blob untuk css/style.css.

Cari blob yang simpan css/style.css.

Pilih satu commit untuk tengok isinya.

Semak

Tiga jenis objek. Yang mana simpan setiap benda ini?

Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.

        Tengok

        git rev-parse HEAD cetak id penuh 40 aksara 9e8ddf8fb3a185e7920bc21542abe85b09f07e21. git log --oneline -1 tunjuk id pendek 9e8ddf8 dan Add opening hours. Output terminal: $ git rev-parse HEAD 9e8ddf8fb3a185e7920bc21542abe85b09f07e21 $ git log --oneline -1 9e8ddf8 (HEAD -> main) Add opening hours

        Nama setiap objek ialah hash (id commit) (hash (commit id)): Kod unik yang menamakan satu commit, contohnya a1b2c3d. SHA-1: Resipi yang Git guna sekarang untuk buat id 40 aksara daripada isi.. Ia ada 40 aksara, dibuat daripada isinya. Id pendek cuma permulaannya.

        Teka

        Anda salin about.html ke about-copy.html dan commit. Berapa blob baru yang Git simpan?

        Pilih satu jawapan.

        Cuba

        Jenis keempat ialah objek tag: label dengan nota. Buka v1.0 dan tengok ia tunjuk ke mana.

        c02eb601a02b3e9e8ddf8

        Anda berjaya!

        Kini anda boleh buka objek Git dan namakan keempat-empat jenisnya.

        Nak tahu lebih (pilihan)

        Tag beranotasi (git tag -a) ialah objek. Tag ringan cuma ref. Git mampatkan setiap objek dan simpan dalam .git/objects. git cat-file -t cetak jenis objek. git cat-file -s cetak saiznya. Git 3.0 merancang id SHA-256 untuk repo baru.

        cat-file -t cetak commit untuk HEAD, tree untuk tree HEAD, dan tag untuk v1.0. Output terminal: $ git cat-file -t HEAD commit $ git cat-file -t HEAD^{tree} tree $ git cat-file -t v1.0 tag