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.