LazyGit - UI Git untuk pengembang yang malas
(bwplotka.dev)lazygit, alat UI Git berbasis terminal, menggabungkan kesederhanaan command line dan intuitivitas antarmuka grafis untuk menghadirkan lingkungan kerja yang cepat dan konsisten- Dirancang dengan fokus pada konsistensi, kemudahan ditemukan, dan interaktivitas, sehingga bahkan pemula bisa langsung memanfaatkannya selama memahami konsep dasar Git
- Keybinding bergaya vim dan struktur visual yang jelas memungkinkan navigasi cepat serta memangkas pekerjaan berulang
- Patch per baris, interactive rebase, cherry-pick, dan lainnya menyederhanakan pekerjaan Git yang kompleks sehingga produktivitas meningkat
- Dibangun di atas framework TUI open source yang ditulis dalam Go, menjadikannya contoh yang layak dijadikan referensi untuk desain UX alat pengembang lain
Latar belakang kemunculan LazyGit
- Penulis menemukan efisiensi alat ini secara tidak sengaja saat menjalankan
lazygitketika bereksperimen dengan Neovim- Setelah itu, seluruh workflow Git dipindahkan ke
lazygit
- Setelah itu, seluruh workflow Git dipindahkan ke
- Sebelumnya ia menggunakan campuran
git gui,gitk, dan CLI, tetapi kemudian mencari alternatif karena UI yang kuno dan ketidakstabilan lazygitsederhana, cepat, dan memiliki struktur yang kompatibel dengan CLI, sehingga lebih tepercaya
Fitur utama LazyGit
Konsistensi (Consistency)
- Antarmuka terdiri dari beberapa "kotak tampilan" yang selalu mempertahankan struktur visual yang sama
- Saat kotak di sisi kiri dipilih, konten di sisi kanan akan berubah mengikuti pilihan tersebut
- Menggunakan terminologi dan abstraksi Git apa adanya untuk mengurangi kurva belajar
- Contoh: konsep Git standar seperti
bisectdanhunkbisa dipelajari secara alami
- Contoh: konsep Git standar seperti
- Mengadopsi keybinding vim (
h/j/k/l,q,/,y,c,a,f,p,r, dll.) agar pengoperasian lebih cepat - Membatasi jumlah perintah dan mengikuti filosofi Unix: “melakukan satu hal dengan baik”
Kemudahan ditemukan (Discoverability)
- Saat dijalankan, langsung menampilkan informasi yang dibutuhkan
- Repositori saat ini, branch, status staging, commit terbaru, stash, perintah terakhir, shortcut, dan lain-lain
- Menyajikan informasi tanpa membebani tampilan secara visual, sehingga perpindahan konteks diminimalkan
- Shortcut bisa langsung dilihat lewat footer bawah atau tombol
? - Pengguna selalu bisa memahami posisi dan status saat ini secara intuitif
Interaktivitas (Interactivity)
- Operasi Git yang kompleks dipandu melalui antarmuka interaktif
- Contoh: saat push, ada peringatan tentang perbedaan upstream; saat rebase, pengguna diminta mengonfirmasi apakah akan interaktif
- Dalam proses rebase, penyelesaian konflik, dan perpindahan branch, alat ini otomatis melakukan konfirmasi serta menyarankan langkah lanjutan
- Tidak perlu mengetik langsung perintah
pick/drop/squash; semuanya bisa dioperasikan dengan kombinasi tombol - Meningkatkan kepercayaan dan kecepatan pengguna dengan gangguan seminimal mungkin
Workflow Git yang ditingkatkan
lazygittidak menambahkan workflow baru, melainkan meningkatkan cara menggunakan fitur Git yang sudah ada agar lebih aman dan cepat- Fitur pemilihan patch per baris dan per hunk memungkinkan pemulihan kode secara sangat detail
- Sebagian commit bisa dikembalikan atau dipisahkan
- Contoh workflow shortcut utama
- Mengubah commit yang sudah ada lalu push:
2 space A P enter - Membuat commit baru lalu push:
2 space c <judul> P - Rebase branch:
3 r i ... m c - Menghapus commit:
4 d - Memecah commit:
4 enter enter <c-p> n <judul> enter - Cherry-pick:
3 4 C 3 4 V
- Mengubah commit yang sudah ada lalu push:
- Dengan penggunaan berulang, shortcut akan menjadi kebiasaan alami sehingga kecepatan kerja meningkat drastis
Pelajaran UX untuk alat pengembang
- Kesederhanaan, konsistensi, kemudahan ditemukan, default yang masuk akal, dan interaktivitas pada
lazygitadalah prinsip desain alat pengembang yang sangat baik - Kemampuan konfigurasi yang mendalam, ekstensibilitas, dan ekosistem kontribusi open source tetap terjaga dengan sehat
- Dibangun di atas framework TUI (gocui) yang ditulis 100% dengan Go, sehingga juga bisa dimanfaatkan untuk pengembangan alat lain
- Menunjukkan kemungkinan membangun alat CLI/TUI baru dengan menerapkan pola UX serupa
Kesimpulan
lazygitdinilai bukan sekadar UI Git sederhana, tetapi juga contoh teladan untuk produktivitas pengembang dan desain UX- Meski fitur bantuan AI terus berkembang, alat ini tetap memainkan peran penting di ranah version control yang menuntut akurasi dan keandalan
- Terus berkembang berkat kontribusi dan kolaborasi komunitas open source
- Siapa pun bisa memakai dan berkontribusi, serta mendapatkan pengalaman Git yang cepat dan intuitif
1 komentar
Opini Hacker News
Dulu saya suka git TUI yang berpusat pada keyboard seperti magit, neogit, dan lazygit
tapi sekarang saya memakai jujutsu(jj) alih-alih git
Setelah terbiasa dengan jj CLI, saya mulai memakai jjui
Saya cukup sering perlu membagi commit, dan plugin hunk.nvim sangat berguna
Selain itu, untuk menyelesaikan jj conflict, jj-diffconflicts adalah yang terbaik
Sekarang dengan jj, saya bisa mengedit grafik commit sealami memindahkan baris kode
Kalau menghapus hunk yang tidak perlu dari commit lama, sering muncul konflik berantai di commit-commit berikutnya; saya penasaran apakah ada alat yang bisa menangani hal seperti ini secara otomatis
Diff yang dipisahkan per file lebih enak dilihat, itu satu-satunya alasannya
Namun saya berharap ada lebih banyak GUI khusus jj. Saat ingin melihat banyak perubahan sekaligus, saya memakai gg, tapi tidak ada side-by-side diff
Setelah melihat video git butler, saya jadi berpikir akan bagus kalau UI jj berkembang ke arah seperti itu
Akan bagus kalau ada GUI yang memungkinkan memindahkan perubahan dengan drag, atau melakukan split/rebase secara interaktif
Setiap tim punya git flow yang berbeda, dan para developer sering terjebak dalam optimasi kecil yang tidak perlu atau enggan belajar
Akhirnya, tiap tim jadi membutuhkan seorang ahli git
Saya malah berharap ada alat yang memaksa hanya satu cara kerja saja
Mungkin terdengar lucu, tapi dari semua git UI yang pernah saya pakai, belum ada yang sebagus SourceTree
Untuk pekerjaan sederhana, ini jauh lebih nyaman daripada CLI, dan tampilan status file serta riwayatnya benar-benar luar biasa
Stage/unstage per hunk atau per baris juga mudah
Sayangnya tidak ada versi Linux. Saya sudah mencoba alat lain, tapi pada akhirnya selalu kembali lagi
Belakangan saya juga mencoba lazygit, dan itu cukup bagus untuk ukuran TUI
Tidak ada auto-refresh, jadi tidak bentrok dengan CLI
Dokumentasi Git Extensions Commit
Saya membuang banyak waktu karena bug dan masalah aneh yang tak terhitung jumlahnya. Tolong, SourceTree harus ditinggalkan
Semakin sering saya memakai git secara langsung, semakin terasa betapa tidak masuk akalnya antarmuka git CLI
Sudah 2 tahun saya memakai jj, dan rasanya saya tidak bisa kembali lagi ke git CLI
Saya terlalu sering melihat orang membuat masalah karena bingung dengan git, jadi saya menyarankan pakai yang lain saja
Saya suka membagi perubahan untuk di-commit dari editor, tapi integrasi editor di jj masih kurang, jadi pada akhirnya commit jadi berantakan
Walau banyak yang menghindarinya karena namanya, GitHub Desktop sebenarnya cukup bagus
Bekerja baik juga untuk repo di luar GitHub, dan mengubah commit serta cherry-pick per file/baris itu mudah
Ada penjelasan untuk setiap operasi yang rumit, jadi sangat bagus terutama untuk pemula
Fitur merge atau grafik memang kurang, tapi tetap menurut saya jauh lebih baik daripada git CLI
Kalau ada anggota tim baru, saya selalu menyuruh mereka memakai GH Desktop. Kesalahan jadi berkurang dan pemahaman mereka lebih cepat
Untuk orang yang tidak percaya diri dengan git, ini pilihan terbaik
Sebaliknya, saya terlalu sering melihat developer junior yang terlalu percaya diri dengan git merusak repo
Karena itu saya sangat merekomendasikan GH Desktop kepada anggota tim
Banyak pengguna git yang belum tahu tentang git-absorb
Ini cocok dengan alur kerja git apa pun, dan mengurangi rasa sakit saat membagi perubahan yang sudah di-stage untuk memperbaiki beberapa commit
Kebanyakan TUI tidak punya fitur seperti ini
Saya juga kurang suka alat berbasis rust karena terlalu banyak dependensi
Kepercayaan saya turun, jadi akhirnya saya berhenti memakainya. Cara kerjanya yang terlalu seperti sihir justru terasa tidak nyaman
Saya masih lebih suka tig
Fiturnya memang lebih sedikit, tapi UI-nya sederhana dan cepat
Saya terutama memakainya untuk incremental index add
VS Code gratis, lintas platform, dan sudah dipakai banyak orang
GUI git-nya juga bagus, dan bisa menangani semua alur kerja umum
Biasanya saya memakai CLI, tapi kalau proyek sudah terbuka di VS Code, sering kali GUI justru lebih cepat dan intuitif
Kombinasi LazyVim + tmux benar-benar mengubah cara saya memakai git
Saya mengatur agar saat menekan ctrl-g, tmux floating pane menampilkan lazygit di direktori saat ini
Jadi saya bisa langsung mengerjakan git tanpa perlu masuk ke dalam neovim atau berpindah UI
Untuk alur kerja yang berpusat pada terminal, ini pengalaman yang paling fleksibel dan mulus
Di
~/.tmux.conf, kalau ditambahkan, Anda bisa memunculkan popup lazygit denganctrl-b ctrl-gdan menutupnya denganqSaya melakukan pekerjaan git dengan perintah suara + AI. Atau menurut saya ctrl-r saja sudah cukup sebagai UI
Belum ada yang menyebutnya, tapi Gitu juga klien yang cukup bagus