Peta dunia

 

EN: Read in English

Dunia 10: Git Mendalam

Ref, fail HEAD dan reftable

Anda akan belajar: apa sebenarnya branch di dalam .git, dan di mana Git 3.0 akan simpannya.

Teks BM belum disemak oleh penutur asli.

Masalahnya

Anda buat branch (cabang) dalam projek yang sangat besar. Ia muncul serta-merta. Tiada salinan, tiada tunggu. Jadi, apa sebenarnya branch di dalam .git?

Pilih satu jawapan.

Tengok

cat .git/refs/heads/main cetak satu id 40 aksara. git rev-parse main cetak id yang sama. Output terminal: $ cat .git/refs/heads/main 9e8ddf8fb3a185e7920bc21542abe85b09f07e21 $ git rev-parse main 9e8ddf8fb3a185e7920bc21542abe85b09f07e21

ref: Nama yang tunjuk ke satu commit, contohnya branch atau tag. ialah nama untuk satu commit. Branch main ialah fail kecil dalam .git/refs/heads. Di dalamnya ada satu id commit.

Cuba

.git/HEAD beritahu di mana anda berada. Baca fail itu. Kemudian detach HEAD, dan baca sekali lagi.

c02eb601a02b3e9e8ddf8

Teka

Anda buat commit baru di main. Apa yang berubah dalam .git/refs/heads/main?

Pilih satu jawapan.

Cuba

Beribu fail ref kecil jadi lambat. git pack-refs --all masukkan semuanya dalam satu fail: packed-refs: Satu fail dalam .git yang simpan banyak ref sekali gus, bukan satu fail kecil setiap satu.. Padatkan, kemudian baca fail itu.

Semak

reftable: Cara baru dan lebih laju untuk simpan ref dalam beberapa jadual padat. Git 3.0 merancang guna untuk repo baru. ialah cara yang lebih baru. Ref disimpan dalam beberapa jadual padat. Format mana sesuai dengan setiap fakta?

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

      Semak

      Repo anda guna reftable. Arahan mana yang masih tunjuk id commit main?

      Pilih satu jawapan.

      Anda berjaya!

      Kini anda boleh baca ref dan fail HEAD, dan anda kenal reftable.

      Nak tahu lebih (pilihan)

      git show-ref senaraikan setiap ref dengan idnya. Mahu cuba reftable sekarang? git init --ref-format=reftable buat repo baru dengannya. Tetapan init.defaultRefFormat buat begitu untuk setiap repo baru. Dalam skrip, tanya Git (rev-parse, show-ref). Jangan baca fail .git.

      git show-ref senaraikan refs/heads/main dan refs/tags/v1.0, setiap satu dengan idnya. Output terminal: $ git show-ref 9e8ddf8fb3a185e7920bc21542abe85b09f07e21 refs/heads/main 283233da77bacbc7cda8523d5950f99a305cc3f0 refs/tags/v1.0