12 poin oleh GN⁺ 2025-11-11 | 1 komentar | Bagikan ke WhatsApp
  • 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 lazygit ketika bereksperimen dengan Neovim
    • Setelah itu, seluruh workflow Git dipindahkan ke lazygit
  • Sebelumnya ia menggunakan campuran git gui, gitk, dan CLI, tetapi kemudian mencari alternatif karena UI yang kuno dan ketidakstabilan
  • lazygit sederhana, 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 bisect dan hunk bisa dipelajari secara alami
  • 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

  • lazygit tidak 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
  • 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 lazygit adalah 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

  • lazygit dinilai 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

 
GN⁺ 2025-11-11
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

    • Terima kasih untuk berbagai tautan alatnya. Saya penasaran apakah ada alat lain yang juga bisa memisahkan atau menggabungkan ulang diff dalam patch series
      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
    • Saya juga sudah sepenuhnya pindah dari git ke jj. Hanya saja, tampilan diff di lazygit lebih rapi, jadi untuk bagian itu saja saya masih memakai lazygit
      Diff yang dipisahkan per file lebih enak dilihat, itu satu-satunya alasannya
    • Saya juga sedang beralih ke jj. Memang belum saya terapkan ke semua proyek, tapi tinggal soal waktu
      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
    • Masalah git adalah sifatnya yang terlalu unopinionated
      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

    • Sudah pernah coba magit? Karena berbasis Emacs, kurva belajarnya memang ada, tapi sepenuhnya berpusat pada keyboard dan sulit menemukan alur kerja yang tidak didukung
    • Untuk commit, tampilan Commit di Git Extensions adalah yang terbaik
      Tidak ada auto-refresh, jadi tidak bentrok dengan CLI
      Dokumentasi Git Extensions Commit
    • Saya paling suka Sublime Merge. Cepat, UI bersih, berjalan baik di semua platform, dan cukup beli lisensi sekali saja
    • Menurut saya Fork atau Tower jauh lebih baik daripada SourceTree. Jangan-jangan Anda cuma pernah mencoba alat gratis?
    • Hampir tidak ada UI di dunia ini yang lebih saya benci daripada SourceTree
      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 juga sudah beberapa kali mencoba jj, tapi karena alur kerjanya belum terasa alami, saya jadi lebih lambat
      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

    • Saya juga setuju soal GH Desktop. Penambahan fiturnya memang lambat, tapi hati-hati
      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
    • Ketiadaan merge/penanganan konflik dan grafik di GH Desktop justru sepertinya menjadi alasan orang menghindarinya
  • 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

    • Kelihatannya berguna, tapi saya memakai magit, jadi commit dan rebase sudah cepat
      Saya juga kurang suka alat berbasis rust karena terlalu banyak dependensi
    • Ini juga sudah masuk ke repo GNU/Debian
    • Saya sempat memakainya beberapa bulan, tapi ada kasus repo jadi setengah kacau karena squash commit yang salah
      Kepercayaan saya turun, jadi akhirnya saya berhenti memakainya. Cara kerjanya yang terlalu seperti sihir justru terasa tidak nyaman
    • Bagi saya, kejelasan riwayat lebih penting. Menulis ulang riwayat demi nama yang rapi bukan ide yang bagus
  • Saya masih lebih suka tig
    Fiturnya memang lebih sedikit, tapi UI-nya sederhana dan cepat
    Saya terutama memakainya untuk incremental index add

    • Saya juga sudah lebih dari 15 tahun memakai tig untuk stage per hunk
  • 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

    • Tapi menurut saya masalahnya justru harus memakai VS Code itu sendiri
  • 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

    • Saya juga baru belakangan tahu tentang tmux display-popup
      Di ~/.tmux.conf,
      bind-key C-g display-popup -E -d "#{pane_current_path}" -xC -yC -w 80% -h 75% "lazygit"
      
      kalau ditambahkan, Anda bisa memunculkan popup lazygit dengan ctrl-b ctrl-g dan menutupnya dengan q
  • Saya 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