gitlogriwayatMenengah5 mnt baca

Membaca Riwayat dengan Cepat: log --oneline --graph

Kuasai git log --oneline --graph --decorate dan alias lg untuk membaca struktur branch dalam sekali lihat.

Masalahnya: git log polos itu berisik

git log tanpa flag menampilkan setiap commit dengan detail penuh: hash 40 karakter, nama author, tanggal, dan pesan lengkap. Untuk 3 commit, tidak masalah. Untuk 300 commit, kamu tenggelam dalam teks. Padahal pertanyaanmu sederhana: "branch apa saja yang ada, dan siapa yang digabung ke mana?"

Flag tampilan tidak mengubah isi riwayat. Mereka hanya mengubah cara riwayat digambar di layar. Tiga flag di bawah adalah kombo wajib yang dipakai developer setiap hari.

--oneline: satu commit, satu baris

bash
git log --oneline

Contoh output:

bash
a3f9c21 Tambah halaman kontak
7b2e410 Perbaiki validasi form
c81d2f5 Setup awal project

Tiap commit diringkas menjadi hash pendek 7 karakter plus baris pertama pesan commit. Ini format scanning cepat: dalam 2 detik kamu tahu 20 commit terakhir berisi apa. Kapan dipakai? Saat kamu ingin tahu "apa saja yang baru terjadi" sebelum pull, atau memastikan commitmu benar-benar sudah masuk ke branch. Hampir semua tutorial dan dokumentasi memakai format ini karena paling hemat tempat.

--graph: menggambar struktur branch

bash
git log --oneline --graph

Contoh output:

bash
* a3f9c21 Tambah halaman kontak
| * 9e4d201 Fix typo footer
|/
* 7b2e410 Perbaiki validasi form

Karakter * dan garis vertikal menggambar percabangan dan penggabungan. Tanpa --graph, commit 9e4d201 terlihat seperti commit biasa yang sejajar. Dengan --graph, jelas ia hidup di branch terpisah lalu digabung kembali. Kapan dipakai? Wajib setelah merge atau rebase untuk memastikan struktur riwayat sesuai ekspektasimu. Kalau ada yang aneh, misalnya branch yang seharusnya lurus malah bercabang, di sinilah kamu pertama kali melihatnya.

--decorate: memberi nama pada commit

bash
git log --oneline --graph --decorate

Contoh output:

bash
* a3f9c21 (HEAD -> main, origin/main) Tambah halaman kontak
| * 9e4d201 (fitur-kontak) Fix typo footer
|/
* 7b2e410 Perbaiki validasi form

Flag --decorate menempelkan label pada commit: branch mana menunjuk ke sana, di mana HEAD berada, tag apa yang menempel. Tanpa label, a3f9c21 hanyalah hash tanpa arti. Dengan label, kamu langsung tahu main lokal dan origin/main sudah sinkron, dan branch fitur-kontak masih tertinggal satu commit. Ini cara tercepat menjawab "apakah branchku sudah sama dengan remote?" tanpa menebak-nebak.

Alias lg: ketik tiga flag jadi dua huruf

Mengetik tiga flag setiap saat melelahkan. Simpan sebagai alias:

bash
git config --global alias.lg "log --oneline --graph --decorate --all"

Sekarang git lg menampilkan semuanya, dan --all memastikan branch lain ikut terlihat, bukan cuma branch aktif. Kenapa alias ini ada? Karena kombo ini dipakai berkali-kali sehari, dan Git memang dirancang untuk dipersonalisasi lewat alias. Hampir setiap developer senior punya alias lg versinya sendiri, jadi jangan heran kalau kamu melihat variasi berbeda di tiap tutorial.

Kapan dipakai dan kapan tidak

Pakai git lg untuk: cek cepat sebelum push, verifikasi hasil merge atau rebase, dan memahami struktur repo asing yang baru kamu clone. Jangan pakai untuk: melihat isi perubahan sebuah commit (pakai git show), mencari commit berdasarkan kata kunci pesan (pakai git log --grep), atau melacak siapa mengubah satu baris kode (pakai git blame). Alat yang tepat untuk pertanyaan yang tepat, itu prinsipnya.

Kesalahan umum pemula

Salah: menjalankan git log polos lalu scroll ratusan commit untuk mencari tahu kapan sebuah branch dibuat. Benar: jalankan git lg --all sekali, struktur branch dan titik percabangannya langsung terlihat dalam satu layar.

Salah: menebak-nebak apakah branch lokal sudah sinkron dengan remote, lalu push "biar aman". Benar: baca label --decorate. Kalau commit teratas bertuliskan (HEAD -> main, origin/main), berarti sinkron. Kalau origin/main tertinggal di bawah, kamu tahu persis apakah perlu push atau pull.

Tantangan

Pasang alias lg dan baca strukturnya

Buat alias lg secara global, lalu jalankan git lg di sebuah repo dan tulis: commit mana yang ditunjuk HEAD, branch apa saja yang terlihat, dan apakah main sudah sinkron dengan origin/main.