25 poin oleh GN⁺ 2025-04-09 | 6 komentar | Bagikan ke WhatsApp
  • Git adalah sistem kontrol versi yang dimulai 20 tahun lalu ketika Linus Torvalds membuat commit pertamanya
  • Awalnya hanya proyek pribadi sederhana, tetapi kemudian berkembang menjadi sistem kontrol versi yang paling luas digunakan di seluruh dunia
  • Penulis adalah salah satu pendiri GitHub, dan telah terlibat sangat dalam dalam perkembangan Git dengan membangun buku dan komunitas terkait Git
  • Pada awalnya Git hanyalah alat sederhana untuk mengelola konten direktori, tetapi kini telah menjadi alat inti yang mengubah cara pengembangan perangkat lunak

Filosofi dan Kebutuhan di Balik Git

  • Git lahir dari ketidakpuasan komunitas kernel Linux terhadap keterbatasan alat kontrol versi yang ada saat itu
  • Cara kolaborasi yang umum waktu itu bersifat terdistribusi dan berbasis lokal, melalui mailing list, tarball, dan file patch
  • Karena alat SCM saat itu lambat, tersentralisasi, dan tidak efisien, pendekatan berbasis tarball/patch justru lebih baik
  • Ada alat alternatif bernama Bitkeeper, tetapi pengembangan Git dimulai karena masalah lisensi
  • Sejak awal Git dirancang bukan sebagai "sistem kontrol versi", melainkan sebagai struktur data untuk menangani patch dan tarball dengan lebih baik

Commit Pertama Git

  • Commit pertamanya adalah alat yang sangat dasar untuk melacak konten direktori
  • Pada saat itu, alat-alatnya bukan perintah seperti git commit, melainkan tool basis data tingkat rendah seperti write-tree, commit-tree, dan lainnya
  • Sejak awal Git sudah memiliki kemampuan berikut:
    • Menyimpan working directory ke cache (update-cache), mengubahnya menjadi objek tree (write-tree), lalu mencatatnya ke basis data
    • Menyimpan perubahan dalam bentuk commit (commit-tree) untuk membuat riwayat
    • Membaca dan membandingkan objek basis data dengan cat-file, read-tree, show-diff
  • Linus memandang Git hanya sebagai backend "plumbing tool", dan ingin UI-nya dibuat dari luar

Contoh Distribusi Konten dengan Git

  • Pada 2005, penulis menggunakan Git di startup bernama Reactrix untuk mendistribusikan konten iklan digital
  • Ratusan layar digital masing-masing perlu menerima kombinasi iklan yang berbeda, dan fitur content addressing Git menyelesaikan hal ini secara efisien
  • Ini adalah contoh kreatif penggunaan Git bukan untuk mengelola kode, melainkan sebagai alat distribusi konten
  • Nick Hengeveld, salah satu kontributor utama proyek Git awal, menambahkan fitur seperti SSL dan transfer HTTP paralel
  • Pengalaman ini kemudian menjadi titik awal pembuatan dokumentasi, situs web, dan buku tentang Git, yang akhirnya berlanjut hingga GitHub

Evolusi Perintah Git dan Alat Pengguna

  • Pada masa awal, semua perintah Git adalah tool berbasis skrip tingkat rendah dan sangat berbeda dari sekarang
  • Perintah seperti git log, git rebase, dan git commit juga awalnya hanyalah skrip shell sederhana, lalu berkembang sedikit demi sedikit hingga menjadi format yang kita kenal sekarang

Versi Awal git log

  • git log adalah skrip sederhana dalam bentuk git-rev-list --pretty HEAD | less
  • rev-list adalah tool untuk menampilkan ID commit yang masih ada hingga sekarang

Munculnya git rebase

  • Konsep rebase lahir dari percakapan email antara Linus dan Junio Hamano pada 2005
  • Cara kerja Junio adalah membuang HEAD yang lama lalu melanjutkan pekerjaan berdasarkan HEAD yang baru, dan ini disebut sebagai "rebase"
  • Dari sinilah berkembang perintah git rebase yang kita kenal sekarang

Asal-usul Octocat

  • Octocat, simbol GitHub, mendapat ide dari strategi "octopus merge" di Git
  • Strategi untuk menggabungkan beberapa branch sekaligus disebut "octopus", dan pada masa awal GitHub kata itu menginspirasi lahirnya karakter Octocat

Masa Kini dan Masa Depan Git

  • Penulis masih memanfaatkan Git sesuai tujuan aslinya sebagai "stupid content tracker"
  • Proyek GitButler memanfaatkan Git untuk melacak dan mencatat riwayat proyek
  • Git tetap menjadi sistem pelacakan konten dan sistem terdistribusi yang kuat, dan ke depan masih mungkin dimanfaatkan dengan berbagai cara
  • Selamat ulang tahun, Git. Masih aneh, masih keren

6 komentar

 
aobamisaki 2025-04-13

Selamat ulang tahun ke-20 untuk Git.

 
bobross0 2025-04-10

Selamat!

 
girr311 2025-04-10

Selamat ulang tahun. Dengarkan baik-baik kata-kata orang tua dan semoga panjang umur serta selalu sehat.

 
kaistj 2025-04-09

Selamat ulang tahun ^^

 
crawler 2025-04-09

Ini postingan yang anehnya bikin semangat ya.

 
GN⁺ 2025-04-09
Opini Hacker News
  • Cerita tentang asal-usul Git cenderung menggambarkan Linus seolah seorang nabi

    • Tulisan blog tersebut menekankan sisi manusiawi Linus dan menyebut percobaan serta kesalahan di masa awal
    • Mercurial juga memainkan peran penting, tetapi sering diabaikan
    • Mercurial sejak awal sudah memiliki UI, dan ramah pengguna dengan UI yang mirip Subversion
    • Struktur data Git tidak cocok untuk file berukuran besar
    • Saya tidak menganggap Git sebagai sesuatu yang tak terelakkan, dan berharap muncul alternatif baru
  • Sekitar tahun 2002, ada gagasan untuk memberi tag kode hash unik pada tiap bagian proyek

    • Sudah diusulkan ke perusahaan perangkat lunak, tetapi tidak mendapat perhatian
  • Mulai menggunakan Git sebagai alternatif ClearCase

    • Mulai menggunakan Git sekitar 2007, dan menulis skrip untuk mengatasi kerepotan ClearCase
    • Pada 2008 mulai berkontribusi patch ke Git, dan belajar banyak tentang kontribusi open source
    • Meski CLI Git kompleks, saya tidak mengalami kesulitan dalam menggunakannya
    • Di pekerjaan berikutnya, saya bekerja berdasarkan fork Chromium, dan menjadi mahir menyelesaikan konflik merge dengan Git
    • Kecewa karena GitHub menjadi alat code review utama untuk Git, tetapi tetap merasa Git adalah pilihan yang lebih baik daripada Mercurial
  • Mengejutkan bahwa Git baru berusia 20 tahun

    • Bahwa GitHub berusia kurang dari 20 tahun tidak terlalu mengejutkan, tetapi fakta bahwa Git belum ada sebelum 2005 terasa mengejutkan
    • Saya belum pernah memakai opsi source control lain, dan bertanya-tanya apakah saya akan memakainya di masa depan
  • Menarik mengetahui konteks sejarahnya

    • ClearCase juga memakai istilah "rebase", dan dapat dipastikan sudah digunakan sejak 1999
    • Rebase di ClearCase memakan waktu lama, jadi rebase instan di Git terasa menakjubkan
  • Ingin membuat alat basis data riwayat tarball yang efisien, dan awalnya tidak berniat membuat sistem kontrol versi

  • Baru tahu bahwa commit bisa ditandatangani dengan kunci ssh

    • Menggunakan metode penandatanganan dengan ssh untuk menyelesaikan masalah di OpenBSD
    • Rasanya tidak seperti sudah 20 tahun sejak memindahkan item pekerjaan dari CVS ke Git
  • Berterima kasih atas artikel yang bermanfaat, dan merekomendasikan repositori yang memuat pengantar tentang struktur internal Git

  • Menarik bahwa ada pendapat ingin menulis posting blog tentang kolaborasi lewat mailing list

  • Di antara banyak sistem source control, Git punya usability terburuk tetapi tetap menjadi sistem favorit saya