git diff menjawab “apa yang berubah”, git log menjawab “kapan dan oleh siapa” — keduanya perintah baca, aman dijalankan kapan pun, dan justru paling sering dibutuhkan saat sedang panik. Chapter ini merangkum keduanya menjadi dua tabel contekan dengan tiga kolom — perintah, fungsi, contoh — ditutup lima resep kombinasi favorit untuk kebutuhan yang paling sering muncul di kerja nyata. Cara membacanya sama dengan chapter contekan sebelumnya: temukan kebutuhan di kolom fungsi, salin contohnya, sesuaikan nama berkas, rentang tanggal, dan pola pencarian dengan repository kita. Semua bentuk persis yang diajarkan di section Melacak Perubahan
dan Commit dan Riwayat
.
Membandingkan dengan diff #
Tiga kompas arah membuka tabel: tanpa argumen berarti working tree, --staged berarti staging area, HEAD berarti segalanya terhadap commit terakhir (Diff Staged dan Unstaged
).
| Perintah | Fungsi | Contoh |
|---|---|---|
git diff | Membandingkan working tree dengan index. | git diff |
git diff <berkas> | Membatasi perbandingan pada satu berkas. | git diff catatan.md |
git diff --staged | Membandingkan staging area dengan commit terakhir. | git diff --staged |
git diff HEAD | Membandingkan seluruh perubahan staged dan unstaged dengan commit terakhir. | git diff HEAD |
git diff <A> <B> | Membandingkan dua titik riwayat mana pun (Diff Antar Commit ). | git diff 5d4639a 1d340cc |
git diff <base> <fitur> | Membandingkan isi dua branch ujung ke ujung. | git diff main fitur-rilis |
git diff <base>...<fitur> | Hanya perubahan fitur sejak titik percabangan (merge-base). | git diff main...fitur-rilis |
git diff <tag> <branch> | Membandingkan titik rilis bertag dengan keadaan sekarang. | git diff v1.0 main |
git diff -w | Mengabaikan seluruh perbedaan whitespace (Whitespace dan Opsi Diff ). | git diff -w |
git diff --stat | Ringkasan berkas dan jumlah baris berubah tanpa isi diff. | git diff --stat |
git diff --name-only | Hanya nama berkas yang berubah — bahan bakar skrip pemeriksa (Pre-Commit Hook ). | git diff --cached --name-only |
git show | Satu commit utuh: metadata penulis plus patch (git show ). | git show HEAD |
Membaca keluaran diff pun punya kunci singkat: awalan a/ menandai sisi lama perbandingan, b/ sisi baru, dan baris berawalan - atau + masing-masing berarti terhapus dan ditambahkan — anatomi lengkapnya dibedah baris demi baris di git diff
.
Menelusuri dengan log #
Filter log bekerja seperti corong: mulai dari --oneline, kecilkan dengan -n, lalu saring penulis, pesan, tanggal, atau isi perubahan sampai yang tersisa hanya yang dicari (Opsi git log
, Mencari Commit
).
| Perintah | Fungsi | Contoh |
|---|---|---|
git log | Menampilkan riwayat commit dari yang terbaru. | git log |
git log --oneline | Satu baris per commit. | git log --oneline |
git log -n 2 | Membatasi jumlah commit yang tampil. | git log -n 2 --oneline |
git log --stat | Menambah ringkasan berkas per commit. | git log --stat -n 3 |
git log --graph --oneline | Menampilkan bentuk penggabungan sebagai graf. | git log --graph --oneline --decorate --all |
git log --format=<bentuk> | Memilih format keluaran: oneline, short, medium, full, fuller (Format Log
). | git log --format=oneline -n 2 |
git log --author="<nama>" | Menyaring commit berdasarkan penulisnya. | git log --author="Siti" --oneline |
git log --grep="<kata>" | Menyaring commit berdasarkan pesannya. | git log --grep="pencarian" --oneline |
git log --since=<tanggal> | Membatasi commit sejak sebuah titik waktu. | git log --since="2026-10-01" --oneline |
git log --until=<tanggal> | Membatasi commit sampai sebuah titik waktu. | git log --until="2026-10-01" --oneline |
git log -S "<teks>" | Pickaxe: commit yang mengubah jumlah kemunculan sebuah teks. | git log -S "diskon" --oneline |
git log -G "<regex>" | Commit yang diff-nya memuat baris cocok dengan pola regex. | git log -G "diskon = 0.25" --oneline |
git log --follow <berkas> | Menelusuri riwayat satu berkas melewati rename (git mv ). | git log --oneline --follow arsip/galeri.txt |
git blame <berkas> | Menampilkan penulis dan commit terakhir untuk tiap baris (git blame ). | git blame README.md |
git blame -L <a>,<b> <berkas> | Membatasi blame pada rentang baris tertentu. | git blame -L 5,6 README.md |
git shortlog -sn | Menghitung commit per penulis, terurut jumlah (git shortlog ). | git shortlog -sn HEAD |
Seluruh opsi pada tabel saling bebas dikombinasikan — git log --author="Siti" --since="2026-10-01" --oneline misalnya menyaring penulis dan rentang waktu sekaligus, dan --skip bahkan bisa melompati jendela tertentu dari riwayat. Corong bisa disempitkan bertingkat sampai tersisa hanya commit yang dicari.
Lima Resep Favorit #
Lima kombinasi berikut menutup sebagian besar kebutuhan pemeriksaan harian — masing-masing adalah rangkaian bentuk-bentuk di atas dan sudah teruji di chapter teorinya.
| Kebutuhan | Resep satu baris |
|---|---|
| Pemeriksaan terakhir sebelum commit | git diff --staged |
| Ringkasan singkat lima commit terakhir | git log --oneline -n 5 |
| Peta seluruh branch dan penggabungannya | git log --graph --oneline --decorate --all |
| Kapan sebuah teks masuk ke kode, dan oleh siapa | git log -S "diskon" --oneline dilanjutkan git blame -L 5,6 README.md |
| Apa yang sebenarnya berubah di branch fitur | git diff main...fitur-rilis --stat |
Menelusuri riwayat memiliki satu penanda permanen: tag. Cara menandai titik rilis, memeriksa, dan membagikannya dirangkum di Perintah Tags .