Lewati ke konten utama

F3 · Modul 09

Git dari dalam

63 langkah singkat, dari mudah sampai tantangan.

  1. Level 1

    Kenal

  2. Level 2

    Paham

  3. Level 3

    Terapkan

  4. Level 4

    Tantangan

  5. Level 5

    Pendalaman

Intinya

  • Git adalah basis data objek beralamat isi: nama objek = SHA-1 dari jenis panjang\0 + isinya, jadi isi yang sama selalu bernama sama.
  • Empat jenis objek: blob (isi berkas), tree (satu folder), commit (snapshot, induk, siapa, kapan, pesan), dan tag beranotasi; ref dan HEAD hanyalah berkas kecil yang menunjuk objek.
  • git add = tulis blob + catat di indeks; git commit = write-tree + commit-tree + update-ref. Kamu bisa melakukannya sendiri, juga dengan Python.
  • Perubahan merambat ke atas pohon Merkle, bagian yang sama dipakai ulang, dan git fsck membuktikan integritas.
  • Menghapus berkas tidak menghapus objeknya: selama terjangkau dari suatu ref, objek ikut setiap clone. Rahasia yang bocor harus dirotasi.

Sebelum mulai

±4 jam.

Modul ini memakai materi di bawah. Belum yakin? Ulas dulu bagian yang disebut.

Hasil belajar: menjelaskan Git sebagai basis data objek yang beralamat isi; menghitung nama objek blob, tree, dan commit dengan SHA-1 lalu mencocokkannya dengan git hash-object; membaca objek apa pun dengan git cat-file; membuat commit hanya dengan perintah pipa ledeng (hash-object, update-index, write-tree, commit-tree, update-ref); membaca isi folder .git (HEAD, ref, packed-refs, indeks, objek); menulis minigit.py yang hash-nya sama persis dengan Git; menjelaskan pohon Merkle dan DAG commit, kenapa rahasia yang sudah ter-commit tetap tersimpan, objek yang terjangkau dan yatim, apa itu tabrakan SHA-1, dan ke mana arah transisi SHA-256.

Proyek: Perkakas Makmur langkah 9: minigit.py (hash_objek, tulis_objek, baca_objek, tulis_tree, tulis_commit) yang membuat repo yang bisa dibaca git log dan lolos git fsck (kontrak proyek).

Istilah di modul ini (42)

Ketuk istilah untuk melihat penjelasannya. Di materi, istilah bergaris titik membuka kartu yang sama. Semua istilah course

Bahan modul

Semua kode, latihan, dan data modul ini dalam satu zip, untuk dijalankan di laptop atau Google Colab.

  • 18 contoh kode
  • 8 berkas latihan + tes
Lihat isi zip
  • BACA-DULU.txt
  • patok-git.sh
  • minigit.py
  • contoh_f3_09_262.py
  • contoh_f3_09_283.py
  • contoh_f3_09_310.py
  • contoh_f3_09_335.py
  • contoh_f3_09_359.py
  • contoh_f3_09_379.py
  • contoh_f3_09_603.py
  • contoh_f3_09_1391.py
  • contoh_f3_09_1420.py
  • contoh_f3_09_1456.py
  • contoh_f3_09_2094.py
  • contoh_f3_09_2111.py
  • contoh_f3_09_2282.py
  • contoh_f3_09_2826.py
  • contoh_f3_09_2864.py
  • contoh_f3_09_2898.py
  • contoh_f3_09_2926.py
  • contoh_f3_09_2950.py
  • test_f3_09_1.py
  • test_f3_09_2.py
  • test_f3_09_4.py
  • test_f3_09_5.py
  • test_f3_09_3.py
  • test_f3_09_6.py
  • test_f3_09_7.py
  • test_f3_09_8.py