Tutorial Jujutsu dari Evan
(evmar.github.io)- Tutorial ini disusun agar pengguna yang sudah berpengalaman dengan Git dapat mempelajari Jujutsu(jj), sistem kontrol versi yang sederhana sekaligus kuat, secara ringkas
- Untuk pembaca yang ingin tahu alasan menggunakan Jujutsu sebelum mulai belajar, tersedia artikel terpisah pengantar Jujutsu
- Juga disediakan alternatif sesuai tingkat pembaca, seperti panduan pemula bergaya percakapan, dokumentasi resmi yang lebih mendetail, dan materi untuk pemula kontrol versi
- Evan Martin menulisnya sendiri agar dapat menentukan dengan cermat pemilihan dan penghilangan topik, serta urutan penyajiannya
- AI tidak digunakan untuk menulis isi utama; setelah sebagian besar selesai, AI hanya dimanfaatkan untuk memeriksa kesalahan
Target pembaca dan alur belajar
- Jujutsu adalah sistem kontrol versi yang sederhana sekaligus kuat, dan dalam tutorial ini selanjutnya ditulis sebagai jj
- Ditujukan untuk pembaca yang sudah terbiasa dengan Git, dengan alur belajar ringkas yang berfokus pada inti
- Jika ingin langsung belajar, Anda dapat membuka mulai tutorial, sedangkan jika ingin memahami alasan pengenalannya terlebih dahulu, lihat artikel pengantar Jujutsu
Materi alternatif berdasarkan pembaca
- Jika pendekatan tutorial ini tidak cocok, Anda dapat memilih materi berikut sesuai tingkat pengalaman dan preferensi
- Steve's Jujutsu tutorial: materi pengantar yang paling direkomendasikan, disusun dengan gaya percakapan
- Jujutsu documentation: menyediakan tutorial resmi yang membahas lebih banyak detail sejak awal
- Jujutsu for Everyone: ditujukan untuk pembaca yang belum memiliki pengalaman kontrol versi sebelumnya
Penulisan langsung dan cakupan penggunaan AI
- Seluruh teks ditulis langsung oleh Evan Martin, dengan keputusan manusia yang cermat tentang apa yang disertakan atau dihilangkan serta urutan penyajiannya
- AI tidak digunakan untuk membuat isi utama, dan hanya dimanfaatkan untuk memeriksa kesalahan setelah sebagian besar teks selesai ditulis
1 komentar
Komentar di Lobste.rs
Terus terang, dengan mempertaruhkan reputasi saya, saya sudah mencoba
jjsekitar seminggu, tetapi pada akhirnya saya malah meminta bantuan LLM untuk mengurangi rasa sakit berurusan langsung dengan Git, dan saya juga tidak merasa itu cukup menggantikan alur kerja yang adaBiasanya saya hanya memakai
git checkout,git add,git commit, dangit push, dan hampir tidak pernah mengalami masalah indeks, stash, berbagai jenis reset, rebase yang sedang berjalan, atau undo yang tidak konsisten seperti yang disebutkan dalam tulisan promosi; saya juga jarang memakai monorepoSaya penasaran siapa target utama Jujutsu, dan berapa lama waktu yang dibutuhkan sampai mahir memakai
jj; lain kali saya ingin berinvestasi setidaknya selama ituSaya juga cenderung menghindari hal-hal di luar operasi dasar di Git, jadi alih-alih melakukan stash lalu mengganti branch, saya meng-clone ulang repositori ke lokasi lain; dan alih-alih memilih hanya perubahan terkait untuk di-commit, saya meng-commit semuanya dengan
git add --all, atau membatalkan perubahan di editor, lalu commit, lalu menerapkannya lagiDi tempat kerja saya memakai Mercurial selama 7 tahun, jadi punya latar belakang yang memudahkan adaptasi ke
jj, tetapi sekarang memindahkan commit dan mengelola banyak perubahan menjadi sederhana, sehingga saya jadi aktif melakukan pekerjaan kompleks yang dulu secara naluriah akan saya hindariKalau sekadar sesekali menyimpan snapshot kode yang dikembangkan secara linear, perintah-perintah itu sudah cukup, dan VCS lengkap mungkin berlebihan—Dropbox saja bisa jadi cukup
Bagi saya, VCS adalah alat untuk membangun narasi yang menunjukkan bagaimana saya memikirkan kode dan hierarkinya; pembaca utamanya adalah rekan kerja, dan pembaca sekundernya adalah saya 10 tahun lagi.
jjmembuat hal ini jauh lebih mudah ditangani tanpa gesekanSaya membaca beberapa panduan dari awal sampai akhir untuk memahami dasar istilah dan fiturnya, lalu menggunakannya secara konsisten selama beberapa hari di proyek pribadi; setelah itu saya menjadi cukup mahir untuk pekerjaan dasar, dan cara saya memandang VCS juga berubah
Saat melakukan refactoring atau mengembangkan fitur besar, saya biasanya terlebih dahulu mengimplementasikan sampai tujuan akhir, lalu membaginya menjadi perubahan kecil seperti “memperbaiki semua peringatan eslint”, “refactoring untuk mengekspos fungsi”, “mengalihkan call site A ke fungsi baru”, dan “menambahkan fitur baru”, supaya mudah ditinjau dan alasan tiap perubahan jelas.
jj splitsempurna untuk pekerjaan ini, dan satu fitur ini saja sudah cukup menjadi alasan memakaijjSebaliknya,
git stashsulit dipakai saat ada banyak stash, dan punya banyak jebakan usability berbahaya yang bisa membuat kode yang disimpan hilang saat terjadi konflik. Menerapkan feedback PR ke commit yang lebih bawah lalu me-rebase commit atau PR di atasnya juga, terutama pada stacked PR, nyaris seperti mimpi buruk karena tidak ada indikator progres dan sulit berhenti di tengah atau menyusunnya kembali. Karena itu, untuk mengelola stacked PR saya masih memakai Graphitejjadalah cara menangani rebaseSeorang mahasiswa pascasarjana jurusan kimia organik mengembangkan branch untuk pekerjaan paper selama 4 tahun tanpa merge atau rebase, sehingga tertinggal ribuan commit dari
main, dan harus menggabungkannya menjelang sidang gelar. Karena konflik muncul di hampir setiap commit, dengan Git ini akan memakan 1–2 minggu; jika pada hari ketiga ada bug mendesak, ia harus menghentikan rebase, memperbaiki bug, lalu mulai lagi dari awal; dan ketika selesai 3 minggu kemudian, ia harus rebase lagi agar sesuai denganmainterbaruDi
jj, konflik merge adalah objek kelas satu, jadi bisa diselesaikan saat ada waktu luang, dan walau di tengah jalan pindah ke commit baru untuk memperbaiki bug mendesak, progres tidak hilang. Rebase yang di Git akan memakan waktu seminggu bisa diselesaikan dalam sehari, dan suatu kali saya menemukan 200 commit berurutan yang jika digabungkan tidak menghasilkan perubahan apa pun, sehingga pekerjaan dua hari menangani puluhan ribu baris konflik bisa saya buang seluruhnya dalam kurang dari satu menit. Bahkan saat rebase, Anda bisa memperbaruimaindan memindahkan branch yang sedang dikerjakan ke atasmainterbaruBagi saya yang sudah terlalu terbiasa dengan Git sampai hanya sesekali perlu mencari perintah, tulisan ini adalah pengantar Jujutsu pertama yang terasa menarik
Tulisan-tulisan sebelumnya biasanya dimulai dengan “Anda bisa lepas dari antarmuka command line Git yang mengerikan”; meski saya memahami keanehan Git dan kesulitan orang lain, ungkapan semacam itu membuat saya menganggap Jujutsu tidak relevan bagi saya, seperti novel roman atau beef vindaloo
jjadalah karena karakteristik implisit yang kita kira pasti ada di semua VCS ternyata sebenarnya tidak demikian, dan operasi atomiknya jauh lebih sederhanaKarena sulit membuat kalimat promosi yang bagus, pada akhirnya frasa “ini bukan Git” mengambil alih seluruh penjelasan; saya sendiri juga tidak pandai menjelaskannya
Tidak seperti GUI Git lain, ia mengikuti perintah Git nyata sebisa mungkin, hanya mengganti sintaks yang sulit dengan menu dan tombol, serta tidak menyembunyikan perintah yang terkait dengan tiap aksi, melainkan mencatatnya di status bar. Kalau Sublime JJ keluar, saya akan langsung pindah
jjadalah Git yang selalu berada dalam kondisi rebase interaktif