بسم الله الرحمن الرحيم

Tentang Lazygit

Lazygit adalah Terminal User Interface sederhana yang digunakan untuk mempermudah kita dalam menggunakan perintah-perintah Git. Ditulis dengan bahasa pemrograman Go oleh Jesse Duffield.

gambar_1

Skenario

Pada catatan kali ini, saya akan mendokumentasikan secara tertulis pemaparan tentang 15 fitur dari Lazygit yang dibawakan oleh Jesse Duffield dalam videonya yang diunggah ke YouTube dengan judul 15 Lazygit Features In Under 15 Minutes.

Navigasi

Key Deskripsi
j & k Move selected cursor up & down
h & l Move selected section up & down
x & ? Keybind help

Features

1. Staging files fast

gambar_2

Pada section Files,

Key Deskripsi Toggle On/Off
Space Selected file into staging Yes
a All files into staging Yes

Keterangan,

Prefix Deskripsi
?? Unstaged file
A Staged file
M Modified file

1.1. Untuk membuat commit message

Key Deskripsi
c Membuat commit message

1.2. Untuk melakukan reset last commit (membatalkan commit terakhir)

Letakkan cursor (highlight cursor) pada commit hash setelah last commit (setelah commit terakhir) (Lihat Gambar 3 di bawah).

gambar_3

Saya ingin melakukan reset terhadap commit hash b5d7f96f, maka cursor saya letakkan pada commit hash 8b27e34f, kemudian tekan g.

Key Deskripsi
g Reset to this commit

Nanti akan keluar popup window,

gambar_4

Pilih yang soft reset.

Kalau berhasil, stagging files yang berada di last commit kita akan muncul di section Files.

gambar_5

2. Staging Lines

Pada section Files, pilih file yang ingin dilakukan commit pada baris tertentu saja.

Kemudian tekan Enter. Focus akan berpindah ke section Unstaged Changes.

gambar_6

2.1. Single line

Pada section Unstaged Changes, tekan Space untuk memasukkan baris yang terseleksi (selected line) ke dalam secton Staged Changes.

gambar_7

2.2. Multiline dengan Visual Block

Bisa juga gunakan Visual Block dengan menekan v (untuk mengaktifkan mode visual block), lalu tekan j (untuk memilih rentang line). Kalau sudah, tinggal tekan Space (untuk memasukkan rentang baris yang terlpilih ke dalam secton Staged Changes).

gambar_8

2.3. Melakukan commit

untuk membuat commit, sama seperti pada feature no. 1 di atas, yaitu menggunakan tombol c untuk membuat commit message.

2.4. Undo staged changes

Untuk melakukan undo terhadap baris yang sudah terlanjur di-staging, kita perlu berpindah section ke secton Staged Changes dengan menekan Tab (toggle on/off).

gambar_9

Kemudian gunakan d atau Space untuk mengembalikan baris atau rentang baris yang tidak jadi di-staging ke section Unstaged Changes.

2.5. Delete unstaged changes

Pada section Unstaged Changes, kita dapat membatalkan perubahan pada baris yang terseleksi dengan menggunakan d.

3. Cherry Picking

Misalkan saat ini kita berada pada branch Master. Pada section Commits, tekan c (toggle on/off) pada commit yang ingin dilakukan cherry picking.

gambar_10

Kemudian pindah ke section Local Branches, dengan h. Pilih branch dengan j dan k, lalu aktifkan (berpindah) branch dengan Space.

Setelah berpindah branch di branch tujuan (misalkan branch tujuan saya adalah status2d), pindah ke section Commits dengan l. Untuk melakukan paste terhadap commit yang sudah kita lakukan cherry pick gunakan v.

Akan ada popup window,

gambar_11

Yang bertuliskan, “Are you sure you want to cherry-pick the copied commits onto this branch?

Tekan Enter untuk setuju.

Hasilnya akan seperti ini,

gambar_12

3 commit hash yang telah dipindahkan dari branch master ke branch status2d

4. Nuking Working Tree

4.1. Nuke single file

Pada section Files, misalkan kita ingin mengembalikan file atau menghapus perubahan yang ada di dalam suatu file seperti keadaan sebelum dilakukan perubahan, kita dapat menggunakan d.

Akan ada popup window,

gambar_13

Pilih discard all changes, untuk mengembalikan file seperti semula (sebelum di-edit).

Cara ini tidak menghapus file namun hanya mengembalikan file ke dalam keadaan semula sebelum dilakukan perubahan.

4.1. Nuke all files

Pada section Files, misalkan kita ingin membersihkan semua unstaging files dari daftar working tree, kita dapat menggunakan Shift+d.

Akan ada popup window,

gambar_14

Pilih “nuke working tree”. Maka, semua unstaged files akan hilang dari daftar working tree.

gambar_15

Cara ini tidak menghapus file-file tersebut namun hanya mengembalikan file ke dalam keadaan semula sebelum dilakukan perubahan.

5. Interactive rebasing

Pada section Commits, kita ingin melakukan rebase dari commit yang saya kotakin merah di bawah.

gambar_16

Untuk melakukan rebase, tekan e. Maka akan masuk ke dalam mode interaktif rebase seperti di bawah ini.

gambar_17

5.1. Beberapa rebase commands

Terdapat beberapa command yang dapat digunakan, seperti:

Key Deskripsi
p Pick commit (when mid-rebase)
s Squash down
e Edit commit
f Fixup commit
d Delete/Drop commit

5.2. Bertukar posisi commit (swap commit position)

Bertukar posisi/swap commit menggunakan,

Key Deskripsi
Ctrl+j Swap selected commit down
Ctrl+k Swap selected commit up

Kalau sudah, tekan m, dan akan muncul popum window.

gambar_18

Pilih continue jika ingin melakukan proses rebase. Pilih abort jika tidak ingin melakukan rebase.

6. Amending old commits

Pada section Files, sudah harus ada file yang masuk staging area.

Kemudian, pindah ke section Commits.

Pilih commit yang ingin dilakukan ammending. Lalu tekan Shift+a.

Akan ada popup window,

gambar_19

Tekan Enter untuk menyetujui.

7. Open pull request

Pada section Local Branches, tekan o, untuk melakukan Open a pull request dari branch yang terseleksi.

Nanti akan dibukakan halaman GitHub Open Pull Request di Browser.

8. Revert commit

Pada section Commits, pilih commit yang ingin dilakukan revert. Kemudian tekan t, maka akan dibuatkan revert commit (commit kebalikan) dari commit yang dipilih. Revert commit tersebut akan dibuatkan commit message dengan prefix “Revert”,

Revert "bla bla commit message bla bla"

gambar_20

9. Stash selected files

9.1. Membuat stash

Pada section Files, apabila ingin melakukan stash pada working tree, tekan s untuk stash changes, atau Shift+s untuk stash staged changes.

Kemudian buat stash message.

Maka, file yang di-stash akan masuk ke dalam section Stash.

gambar_21

9.2. Menggunakan stash

Pada section Stash, pilih stash yang ingin digunakan. Untuk menggunakannya, ketik Space untuk mengeluarkan dari stash tanpa menghapus, atau ketik g untuk mengeluarkan dari stash sekaligus menghapus dari stash.

10. Moving code between old commits

https://www.youtube.com/watch?v=CPLdltN7wgE&t=442s

11. Deleting code from old commits

https://www.youtube.com/watch?v=CPLdltN7wgE&t=512s

12. Fixing merge conflicts

https://www.youtube.com/watch?v=CPLdltN7wgE&t=547s

13. Easy rebase onto origin/master

https://www.youtube.com/watch?v=CPLdltN7wgE&t=565s

14. Branch checkout without stashing changes

https://www.youtube.com/watch?v=CPLdltN7wgE&t=613s

15. Theme customisation

https://www.youtube.com/watch?v=CPLdltN7wgE&t=671s

Thanks

Trima kasih kepada Jesse Duffield karena telah membuat Lazygit.

Pesan Penulis

Sepertinya, segini dulu yang dapat saya tuliskan.

Mudah-mudahan dapat bermanfaat.

Terima kasih.

(^_^)

Referensi

  1. https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase
    Diakses tanggal: 2021/12/15


Penulis

bandithijo

My journey kicks off from reading textbooks as a former Medical Student to digging bugs as a Software Engineer – a delightful rollercoaster of career twists. Embracing failure with the grace of a Cat avoiding water, I've seamlessly transitioned from Stethoscope to Keyboard. Armed with ability for learning and adapting faster than a Heart Beat, I'm on a mission to turn Code into a Product.

- Rizqi Nur Assyaufi

d98d8237fef8f1017d0be931b6e291341cbe6ca8