Alat-alat perangkat lunak terbaik biasanya lahir dari kebutuhan yang menyakitkan, dan Git bukan pengecualian. Kisahnya bermula dari proyek perangkat lunak terbesar di dunia — kernel Linux — yang kehilangan alat pengelola versinya di tengah jalan, lalu mendapatkan penggantinya yang ditulis dalam hitungan hari. Memahami sejarah ini menjelaskan mengapa Git dirancang terdistribusi, cepat, dan tangguh untuk proyek raksasa. Kronologi lengkap versi-versi besarnya juga membantu kita menempatkan Git yang kita pakai hari ini dalam garis waktu yang benar. Sumber utama chapter ini adalah bab A Short History of Git pada buku Pro Git.
BitKeeper dan Kernel Linux #
Selama tahun-tahun awal pengembangan kernel (1991–2002), perubahan kode Linux diedarkan sebagai patch dan berkas arsip — cara yang sederhana tetapi makin sulit dipertahankan seiring membesarnya proyek. Pada tahun 2002, komunitas kernel beralih ke BitKeeper, sistem version control terdistribusi komersial yang saat itu tersedia gratis bagi pengembang kernel.
Kerja sama ini berakhir pada tahun 2005. Hubungan antara komunitas kernel dan perusahaan pembuat BitKeeper retak — pemicunya sengketa lisensi, termasuk tuduhan bahwa salah seorang pengembang melakukan rekayasa terbalik terhadap protokol BitKeeper. Status gratis BitKeeper dicabut, dan pengembangan kernel mendadak kehilangan sistem pengelola versinya.
Linus Menulis Git #
Linus Torvalds kemudian memutuskan menulis alat sendiri, dengan pengalaman memakai BitKeeper sebagai bahan pelajaran. Kecepatannya membuat Git termasuk proyek yang lahir paling cepat dalam sejarah perangkat lunak bebas:
- Pengembangan Git dimulai pada 3 April 2005.
- Proyek diumumkan ke publik pada 6 April 2005.
- Pada 7 April 2005, Git menjadi self-hosting — sejak hari itu kode sumber Git dikelola oleh Git sendiri.
- Pada 16 Juni 2005, Git dipakai untuk mengelola rilis kernel 2.6.12, membuktikan alat baru itu sanggup memikul beban proyek yang memicu kelahirannya.
Hanya beberapa bulan setelah peluncuran awal, tepatnya pada 26 Juli 2005, Linus menyerahkan peran maintainer Git kepada Junio C. Hamano, kontributor paling aktif sejak minggu-minggu pertama proyek. Hamano merilis Git 1.0 pada 21 Desember 2005 dan memimpin pengembangan Git hingga hari ini — salah satu masa jabatan maintainer terpanjang di dunia perangkat lunak bebas.
Dari 1.0 ke Era 2.x #
Setelah versi 1.0, pengembangan Git berjalan cepat dan stabil: dukungan lintas platform termasuk Windows terus membaik, antarmuka perintah dirapikan, dan performa terus ditingkatkan. Tahun 2014 ditandai rilis Git 2.0, yang menyelaraskan sejumlah perilaku bawaan dengan cara kerja tim modern — misalnya perilaku bawaan git push yang lebih aman.
Saat ini Git berada pada seri 2.4x–2.5x. Pengujian seluruh materi Course dilakukan dengan Git 2.47.3, sedangkan versi stabil terbaru saat materi disusun adalah 2.56.0. Perubahan antar-versi kecil di seri 2.x bersifat penyempurnaan, bukan perombakan, sehingga keterampilan inti Git tidak usang oleh pembaruan versi.
Kronologi berikut merangkum perjalanan Git dari kernel Linux hingga hari ini:
| Waktu | Peristiwa |
|---|---|
| 1991–2002 | Kernel Linux dikelola lewat patch dan berkas arsip |
| 2002 | Kernel beralih ke BitKeeper |
| April 2005 | Sengketa lisensi; Linus menulis Git — mulai 3 April, self-hosting 7 April |
| Juli 2005 | Maintainership berpindah ke Junio C. Hamano (26 Juli) |
| Desember 2005 | Git 1.0 dirilis (21 Desember) |
| 2014 | Git 2.0 dirilis, perilaku bawaan dimodernkan |
| Sekarang | Seri 2.4x–2.5x; stabil terbaru 2.56.0, Course diuji dengan 2.47.3 |
Sebagai penutup cerita: nama git sendiri adalah slang Inggris untuk orang yang menyebalkan. Linus bercanda bahwa ia menamai semua proyeknya berdasarkan dirinya — dulu Linux, sekarang git — dan halaman manual Git dengan jujur mendeskripsikan dirinya sebagai “the stupid content tracker”. Nada bercanda itu tidak mengubah fakta bahwa desainnya mengalahkan semua pesaing generasinya.
Sejarah menjelaskan mengapa Git dirancang demikian; chapter berikutnya menjelaskan bagaimana Git bekerja sehari-hari — tiga area kerja tempat perubahan kita mengalir dari editor menuju riwayat permanen. Lanjut ke Cara Kerja Git .