Ikhtisar Demo Produk GitButler (Musim Panas 2025)

GGitButler
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Halo semuanya, saya Scott, CEO GitButler.
00:00:02Hari ini saya akan membahas beberapa fitur keren GitButler dan memberi Anda
00:00:05gambaran umum tentang apa yang bisa dilakukan oleh Git client ini.
00:00:07Jadi saya punya contoh proyek di sini. Semacam tiruan Twitter atau X. Saya menamainya Y.
00:00:12Saya akan menambahkan beberapa editan yang sudah saya buat dan kita akan melihat
00:00:16cara membuat commit, membuat branch, membuat branch paralel, dan cara
00:00:20membuat stacked branch. Jika saya mengedit file, yang akan Anda lihat adalah sesuatu yang mirip dengan
00:00:25output Git status yang menunjukkan file mana saja yang kini dimodifikasi di direktori kerja Anda.
00:00:30Apa yang ingin Anda lakukan? Bagaimana cara men-commit-nya? Di sini kita bisa memeriksanya. Saya bisa
00:00:34melihat ke CSS aplikasi, sidebar, dan index saya. Ada beberapa perubahan kecil yang saya buat
00:00:39di sini. Jadi yang ingin saya lakukan adalah membuat branch baru dan men-commit perubahan ini ke
00:00:45branch tersebut. Ada beberapa cara berbeda untuk melakukannya. Saya bisa menekan "commit ke
00:00:49branch baru" atau saya bisa secara eksplisit membuat branch baru di sini dan saya akan membuat branch independen
00:00:54daripada branch dependen. Kita akan membahas stacking sebentar lagi.
00:00:57Berikan nama, buat branch-nya, dan sekarang ada beberapa hal yang bisa dilakukan. Anda bisa
00:01:03langsung men-commit sesuatu, kan? Jadi saya bisa men-commit file application.css ini
00:01:08dengan menyeretnya ke jalur kerja dan membuat commit, atau saya bisa mulai membuat commit dari sini.
00:01:15Anda bisa membuat pesan commit pendek di bagian kecil ini, atau Anda bisa memperluasnya dan
00:01:19menulis pesan commit panjang yang bagus di sini. Mari kita buat tetap sederhana saja. Hal lain yang bisa saya lakukan adalah
00:01:27saya bisa menentukan apa saja yang masuk ke commit ini. Saya punya tiga file di samping sini. Saya tidak hanya bisa bilang
00:01:34bahwa saya tidak mau file tertentu, saya juga bisa masuk ke sebuah file dan memilih baris spesifik saja.
00:01:39Tapi untuk sekarang mari kita commit semua perubahannya. Atau sebenarnya, mari kita buat dua
00:01:44commit berbeda. Saya tidak ingin menyertakan perubahan sidebar di commit ini. Jadi saya akan buat "perbaikan front-end"
00:01:48lalu saya buat commit lain "perbaikan sidebar". Sekarang ada dua commit di branch baru ini. Saya agak
00:01:55malas jadi saya akan memakai Claude Code untuk mengerjakannya. Saya akan mengubah temanya
00:01:59dari biru ke merah, lalu kita lihat bagaimana cara menambah branch baru terpisah yang hanya berisi perubahan itu,
00:02:04terpisah dari perbaikan front-end saya. Sepertinya sudah selesai. Ini tampilan websitenya tadi.
00:02:09Mirip Twitter gitu. Jika saya terapkan perubahannya, sekarang temanya jadi merah
00:02:14dan perubahan front-end saya sudah selesai. Anda bisa lihat ini sebenarnya adalah branch-branch independen.
00:02:18Jika saya batalkan penerapan tumpukan perbaikan front-end, temanya tetap merah tapi perbaikannya hilang. Ini
00:02:25yang saya lakukan di sini. Dan saya bisa memasukkannya kembali. Sekarang itu sudah hilang. Atau sama saja,
00:02:34saya bisa membatalkan penerapan tema warna merah dan sekarang warnanya tidak merah lagi. Mari kita masukkan lagi. Sekarang kita punya dua
00:02:43branch berbeda. Hal kerennya adalah jika misalnya saya push ini ke GitHub,
00:02:48perubahan-perubahan ini terpisah satu sama lain. Tapi keduanya diterapkan di saat yang sama. Jadi
00:02:52sama seperti branch Git, kecuali Anda bisa mengerjakan lebih dari satu secara bersamaan.
00:02:57Jika saya lanjut mengerjakan sesuatu di sidebar, perubahannya akan muncul di sini. Dan saya
00:03:04bisa melakukan banyak hal. Saya bisa menyeretnya ke sini dan meng-amend commit ini jika mau.
00:03:10Saya juga bisa men-commit-nya sebagai commit baru di branch tersebut. Sekarang kita punya dua branch
00:03:14yang berjalan paralel. Mari kita lihat cara lain untuk melakukannya. Apa yang bisa kita lakukan alih-alih itu,
00:03:18katakanlah tema merah ini bergantung pada perubahan yang kita lakukan di front-end. Jadi saya sangat
00:03:24ingin men-merge bagian front-end sebelum melihat bagian merah, atau men-merge semuanya
00:03:29sekaligus. Jadi mari kita urungkan commit ini. Kita uncommit. Dan kita akan menjadikannya stacked branch saja.
00:03:37Kita uncommit dan batalkan penerapan tumpukannya. Sekarang kita akan tambahkan branch dependen baru di sini.
00:03:42Tekan buat branch baru, lalu tambah branch dependen. Cara lainnya adalah
00:03:47ini. Anda bisa tekan buat branch dependen di sini dan tambahkan tumpukan perbaikan front-end. Mari kita namai
00:03:51sc_red_theme. Sekarang Anda bisa lihat bahwa branch-branch ini bertumpuk. Dan saya bisa ambil ini
00:03:58dan men-commit-nya ke yang satu ini. Jadi jika Anda punya stacked branch seperti ini, Anda bisa push ke GitHub.
00:04:06Sangat mudah untuk mem-push-nya. Jika Anda sudah menyiapkan integrasi GitHub, Anda juga bisa
00:04:11membuat pull request. Jadi jika saya buat pull request bernama "tema merah" di sini tapi ini
00:04:16adalah stacked branch, sistem akan memasukkan footer ke dalam deskripsi PR yang menyatakan
00:04:20bahwa branch ini sebenarnya bergantung pada branch target lainnya. Dan Anda harus
00:04:25men-merge semuanya sekaligus atau men-merge perbaikan front-end sebelum tema merah. Tapi ini
00:04:30cara yang sangat bagus untuk menangani stacked branch. Jika saya lihat PR ini sekarang, ada link
00:04:34ke keduanya dalam satu tumpukan. Ini bagian kedua dari tumpukan dan ini bagian pertama,
00:04:39dan mereka saling bergantung. Hal lain yang keren adalah Anda bisa melakukan apa yang
00:04:43disebut sebagai "assigning to branches". Dalam kasus ini saya punya dua lane dan tiga branch. Dua di antaranya
00:04:48bertumpuk, satu independen. Saat saya mulai membuat perubahan, yang bisa saya lakukan adalah saya bisa menetapkan
00:04:54hunk. Saya bisa menetapkan perubahan ke branch tertentu dan terus mengerjakannya. Ini seperti
00:05:00setiap lane punya area staging independen masing-masing. Jadi jika Anda menjalankan "git add" dan men-stage perubahan
00:05:05di Git, ini mirip seperti itu, hanya saja Anda bisa punya beberapa area staging yang independen.
00:05:09Mari kita coba. Saya akan menambah fitur baru untuk halaman admin, sebuah bagian kecil.
00:05:14Saya akan menaruhnya di branch-nya sendiri lagi di direktori kerja yang sama, di
00:05:19branch baru yang tidak bertumpuk, ini hal independen, dan saya bisa buka PR yang hanya berisi
00:05:24perubahan tersebut. Oke, ini tampilan dashboard admin sebelumnya. Saya sudah buat beberapa perubahan di bagian
00:05:31pendaftaran terbaru. Saya punya dua perubahan di sini dan saya ingin menetapkannya ke
00:05:37lane ini, dan jika nanti saya buat perubahan lagi, sistem akan menaruhnya di "unassigned" jika tidak bisa
00:05:43menentukannya. Jika perubahannya masih dalam hunk yang sama, maka akan otomatis tetap berada di lane yang ditentukan.
00:05:47Mari kita ubah admin controller di sini. Cuma komentar konyol, tapi mari
00:05:55kita lihat hasilnya. Bisa kita lihat, karena admin controller sudah ditetapkan ke lane ini,
00:06:00saya tidak perlu men-stage-nya lagi terus-menerus. Sistem bilang, "Ini bagian dari perubahan
00:06:05itu juga," dan memasukkannya ke sana. Mari kita buat commit baru untuk ini. Saya akan mulai
00:06:10proses commit lagi. Saya juga bisa memperluas ini dan menulis pesan commit yang bagus. Saya juga bisa pakai AI
00:06:15untuk membuat draf pesan commit jika Anda butuh titik awal, lalu Anda bisa mengeditnya.
00:06:19AI akan melihat perbedaan yang Anda buat dan memberikan setidaknya draf awal. Oke,
00:06:23sekarang kita punya commit di halaman admin pendaftaran baru. Kita punya stacked branch ini
00:06:27di sisi sini, dan sekali lagi saya bisa push dan buat PR dari sini secara independen. Dan jika
00:06:31saya lakukan itu dan memeriksa PR-nya, yang akan kita lihat adalah meskipun semua perubahan
00:06:37ada di direktori kerja saya di saat yang sama, sistem telah memisahkannya ke dalam
00:06:42branch yang berbeda. Jadi saya bisa masuk dan melihat hanya bagian admin ini. Jelas hanya mengedit
00:06:48halaman admin dan menyimpannya di branch dan commit sendiri, serta tidak terhubung dengan
00:06:55semua pekerjaan lain di direktori kerja saya. Semuanya disimpan di branch terpisah.
00:06:58Itulah keuntungan bekerja dengan branch paralel dan stacked branch
00:07:02di GitButler. Ada banyak hal yang bisa kita lakukan yang biasanya sulit dilakukan di
00:07:06Git biasa, akan saya tunjukkan beberapa. Pertama, kita bisa memindahkan commit antar branch.
00:07:11Jadi jika saya ingin mengambil commit pendaftaran baru ini dan memindahkannya ke commit
00:07:15tema merah, saya tinggal seret dan lepas, lalu saya bisa hapus tumpukan ini. Sekarang
00:07:20commit saya ada di sini. Jika saya ingin men-squash commit, saya bisa ambil ini dan menyeretnya
00:07:26tidak hanya ke yang di bawahnya, tapi ke commit lain mana pun dalam tumpukan tersebut. Jadi saya bisa ambil
00:07:30bagian admin ini dan menaruhnya ke perbaikan sidebar, atau saya bisa memindahkannya, kan?
00:07:36Saya bisa memindahkannya lebih jauh ke bawah tumpukan atau men-squash-nya ke commit lain. Sekarang Anda lihat
00:07:41bagian admin ini juga ada di perbaikan sidebar. Kita juga bisa melakukan sebaliknya, memecah commit,
00:07:47caranya dengan menambahkan commit kosong lalu memindahkan perubahan ke dalam commit tersebut.
00:07:52Jika saya lakukan ini, saya bisa tambah commit kosong di mana saja dalam tumpukan ini, dalam hal ini di bawah. Saya bisa tulis
00:07:58pesan commit-nya sekarang atau memindahkan file ke dalamnya dulu. Mari kita lihat semua file ini.
00:08:02Ada admin controller dan sidebar. Mari ambil admin index dan seret
00:08:08ke yang tengah ini. Sekarang commit ini hanya punya admin index, sementara perbaikan sidebar
00:08:13masih punya file lainnya di sini. Admin controller dan sidebar. Saya juga bisa memindahkan hanya hunk
00:08:20saja. Sekarang yang satu ini punya sebagian dari perbaikan sidebar dan yang satunya lagi punya bagian lain
00:08:30dari perbaikan sidebar. Dan setelah itu, saya bisa mengubah pesan commit-nya jika mau.
00:08:34Ini membawa kita ke poin lain, yaitu mengedit pesan commit sangatlah mudah, kan?
00:08:41Selain memindahkan urutan, men-squash, atau memecahnya, saya bisa kembali
00:08:46dan bilang, "Sebenarnya saya ingin mengubah ini jadi bagian kedua." Dan sistem akan me-rebase semua
00:08:53commit di atasnya. Hal menarik lainnya adalah mengedit commit langsung di tempat, dan
00:08:57ada beberapa cara cepat untuk melakukannya. Katakanlah seseorang memberi masukan
00:09:01bahwa alih-alih margin top 0, mereka ingin margin top 10 piksel.
00:09:06Nah, bagaimana cara mengedit commit yang bukan hanya empat commit ke belakang tapi juga di tumpukan lain?
00:09:13Ternyata dengan GitButler ini sangat, sangat mudah. Mari kita buat perubahannya.
00:09:16Oke, di sini, mari kita ubah jadi 10 piksel. Inline CSS memang yang terbaik. Ini perubahan yang
00:09:23saya buat di sini. Statusnya terkunci karena kita mengedit hunk yang sudah pernah diedit, jadi harus
00:09:28masuk ke branch ini di suatu tempat. Kita tidak bisa menaruhnya di branch paralel terpisah, begitulah
00:09:32kita mengetahuinya. Tapi bagaimana caranya? Cara termudah adalah dengan mengambil file ini
00:09:39dan menyeretnya ke commit ini. Jadi sekarang jika kita lihat commit ini, sudah ada 10 piksel di
00:09:46sana, kita sudah memodifikasinya dan me-rebase commit lainnya di atasnya. Cara lainnya,
00:09:51seperti yang sudah kita lihat, adalah kita bisa men-commit-nya ke commit sementara
00:09:55lalu men-squash-nya ke commit yang ini. Itu pada dasarnya memberikan hasil yang
00:10:02sama; jika kita lihat lagi, margin-nya sekarang 10 piksel. Dan cara terakhir yang menarik
00:10:07untuk melakukannya adalah dengan mode edit. Anggap saja kita belum melakukan apa pun di sini. Masih
00:10:12nol piksel dan kita ingin mengeditnya. Kita bisa masuk ke commit-nya langsung di sini
00:10:20dan memilih "edit commit". Saat Anda memilih edit commit, terjadi sesuatu yang menarik.
00:10:25Mirip seperti Git melakukan "detached head checkout" jika Anda pernah melakukannya. Ini pada dasarnya
00:10:30men-checkout commit tersebut pada kondisi itu. Anda bisa edit sesuka hati dan saat Anda keluar dari
00:10:36mode itu, sistem akan me-rebase segalanya di atasnya lagi. Kita masuk, buat perubahan lagi.
00:10:39Sistem mendeteksi modifikasi, file telah diubah, lalu kita simpan dan keluar. Dan sekali lagi,
00:10:46sistem me-rebase sisanya. Kita bisa lihat perubahannya tersimpan di sana. Jadi Anda bisa langsung
00:10:52mengedit commit. Anda bisa buat perubahan lalu meng-amend commit-nya. Atau buat perubahan, commit,
00:10:57lalu squash. Ada banyak cara untuk memanipulasi perubahan yang Anda miliki di commit GitButler.
00:11:01Dan hal terakhir yang akan saya tunjukkan adalah fitur bernama "operations history".
00:11:05Ini adalah sesuatu yang sangat sulit dilakukan di Git jika Anda pernah mencoba hal-hal terkait
00:11:10reflog. Saya rasa semua orang agak takut dengan itu, tapi semua yang Anda lakukan di GitButler
00:11:15tersimpan di log operasi dan Anda bisa melihat timeline serta kembali ke titik waktu mana pun di masa lalu.
00:11:21Tombolnya ada di sini, kita bisa lihat riwayat operasi kita, semua hal berbeda yang kita lakukan
00:11:26selama sesi ini. Dan saya bisa kembali ke titik waktu mana pun.
00:11:30Jadi jika saya ingin kembali ke sebelum saya mulai melakukan urusan 10 piksel ini,
00:11:37saya bisa kembali ke sini, memeriksanya, dan melihat: Oke, ini perubahan yang saya buat saat itu,
00:11:42tepat sebelum saya melakukan semua itu. Atau saya bahkan bisa kembali ke awal sesi
00:11:47yang kita lakukan tadi. Yang tidak dibatalkan adalah apa yang sudah di-push ke GitHub.
00:11:52Di sini saya bisa lihat commit-commit yang sudah di-push, mereka terdaftar sebagai upstream commit,
00:11:56tapi saya kembali ke sebelum saya men-commit apa pun sama sekali. Dan saya
00:12:01bisa menghapus branch ini jika mau dan mulai lagi dari awal. Apa pun yang Anda lakukan tidak masalah,
00:12:05bahkan pembatalan tadi pun bisa saya batalkan. Jadi jika saya ke sini dan melakukan "revert the revert
00:12:11snapshot", maka kita kembali ke kondisi semula. Kita selalu bisa kembali ke titik waktu
00:12:16mana pun. Sangat menyenangkan karena Anda tidak perlu takut melakukan tindakan-tindakan ini.
00:12:22Jika Anda terjebak di kondisi aneh atau ingin kembali ke tampilan 10 menit
00:12:26yang lalu, tinggal buka timeline, kembali ke titik itu, tekan revert, dan selesai. Oke, itulah
00:12:32gambaran singkat GitButler: rebaser, editor commit, branch paralel, dan stacked branch,
00:12:36semuanya mudah dilakukan tanpa alat lain. Silakan download, beri tahu kami pendapat Anda di Discord,
00:12:41dan selamat menikmati.

Key Takeaway

GitButler adalah Git client inovatif yang menyederhanakan alur kerja kompleks seperti stacked branches, manajemen commit paralel, dan manipulasi riwayat Git melalui antarmuka visual yang intuitif dan dukungan AI.

Highlights

GitButler memungkinkan pengembang untuk mengerjakan beberapa branch secara paralel di direktori kerja yang sama tanpa perlu berpindah konteks.

Fitur 'Stacked Branches' memudahkan pengelolaan dependensi antar branch

Timeline

Pendahuluan dan Konsep Dasar GitButler

Scott selaku CEO GitButler memperkenalkan alat ini sebagai Git client yang dirancang untuk meningkatkan produktivitas pengembang. Dia mendemonstrasikan sebuah proyek contoh bernama "Y" yang merupakan tiruan dari platform Twitter atau X. Fokus utama bagian ini adalah menunjukkan bagaimana file yang dimodifikasi muncul secara visual mirip dengan output "git status". Pengguna diperkenalkan pada konsep dasar pembuatan branch independen dan paralel sejak awal sesi. Penjelasan ini memberikan landasan tentang bagaimana GitButler menangani perubahan file di direktori kerja secara real-time.

Manajemen Commit dan Integrasi AI

Dalam segmen ini, Scott mendemonstrasikan fleksibilitas dalam membuat commit, termasuk memilih file tertentu atau bahkan baris kode spesifik (hunk). Dia menunjukkan penggunaan Claude Code untuk mengubah tema aplikasi dari biru menjadi merah secara otomatis guna mempercepat demo. Hal ini menonjolkan bagaimana GitButler dapat memisahkan perubahan front-end dan perubahan tema ke dalam branch yang berbeda meskipun dikerjakan bersamaan. Scott menekankan bahwa pengguna bisa menulis pesan commit yang pendek maupun panjang dengan mudah dalam antarmuka tersebut. Kemampuan untuk membatalkan penerapan (unapply) branch tertentu tanpa mengganggu pekerjaan lain juga diperlihatkan di sini.

Bekerja dengan Stacked Branches dan GitHub

Bagian ini menjelaskan konsep 'Stacked Branches' di mana satu branch bergantung pada branch lainnya dalam sebuah tumpukan. Scott menunjukkan cara mengubah branch independen menjadi branch dependen dan bagaimana hal ini terlihat dalam struktur visual GitButler. Saat melakukan push ke GitHub, sistem secara otomatis menyertakan deskripsi pada Pull Request yang menjelaskan dependensi antar branch tersebut. Fitur ini sangat berguna bagi tim yang ingin meninjau perubahan secara bertahap namun tetap terhubung. Integrasi ini memastikan bahwa proses merge dilakukan dalam urutan yang benar sesuai tumpukannya.

Penetapan Perubahan ke Branch dan Staging Independen

Scott menjelaskan fitur unik di mana setiap branch atau 'lane' memiliki area staging independen masing-masing. Dia mencontohkan penambahan fitur halaman admin dan bagaimana sistem secara otomatis menetapkan perubahan ke branch yang relevan berdasarkan konteks file. Jika sistem tidak yakin, perubahan akan masuk ke kategori 'unassigned' untuk kemudian ditentukan secara manual oleh pengguna. AI juga digunakan di sini untuk membantu menghasilkan draf pesan commit berdasarkan analisis perbedaan kode (diff). Demonstrasi ini membuktikan bahwa bekerja pada banyak fitur secara simultan dalam satu direktori kerja menjadi sangat rapi dan terorganisir.

Manipulasi Commit: Drag-and-Drop, Squash, dan Split

Sesi ini menyoroti kemudahan manipulasi riwayat Git yang biasanya sulit dilakukan melalui baris perintah konvensional. Scott mendemonstrasikan cara memindahkan commit antar branch hanya dengan menyeret dan menjatuhkannya (drag-and-drop). Pengguna juga dapat men-squash commit ke posisi mana pun dalam tumpukan atau memecah satu commit menjadi beberapa bagian dengan bantuan commit kosong. Proses pemindahan file atau hunk spesifik antar commit dilakukan secara visual dan instan tanpa perintah rebase yang rumit. Kemudahan ini memberikan kendali penuh kepada pengembang atas struktur riwayat kode mereka sebelum dibagikan ke tim.

Pengeditan Commit di Tempat dan Mode Detached

Fokus beralih ke cara mengedit commit yang sudah ada tanpa harus melakukan rebase manual yang berisiko. Scott menunjukkan tiga metode: menyeret file baru ke commit lama, melakukan squash dari commit sementara, atau menggunakan 'Edit Mode' yang canggih. 'Edit Mode' bekerja dengan cara melakukan checkout pada kondisi commit tersebut, membiarkan pengguna mengedit file, dan secara otomatis me-rebase semua commit di atasnya setelah selesai. Ini sangat membantu ketika ada masukan review, seperti mengubah nilai CSS yang tertanam jauh di dalam riwayat commit. Sistem menangani semua konflik dan penataan ulang commit di latar belakang secara transparan.

Riwayat Operasi dan Penutup

Fitur terakhir yang dipamerkan adalah 'Operations History', yang digambarkan sebagai versi ramah pengguna dari Git reflog. Scott menunjukkan linimasa dari semua tindakan yang telah dilakukan dan membuktikan bahwa pengguna bisa kembali ke titik waktu mana pun dengan satu klik. Bahkan tindakan pembatalan (revert) pun dapat dibatalkan kembali, sehingga memberikan rasa aman total bagi pengembang untuk bereksperimen. Hal ini menghilangkan rasa takut akan merusak repositori saat melakukan operasi Git yang kompleks. Video diakhiri dengan ajakan untuk mengunduh GitButler, bergabung di komunitas Discord, dan mencoba fitur-fitur tersebut secara langsung.

Community Posts

View all posts