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 ).

PerintahFungsiContoh
git diffMembandingkan working tree dengan index.git diff
git diff <berkas>Membatasi perbandingan pada satu berkas.git diff catatan.md
git diff --stagedMembandingkan staging area dengan commit terakhir.git diff --staged
git diff HEADMembandingkan 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 -wMengabaikan seluruh perbedaan whitespace (Whitespace dan Opsi Diff ).git diff -w
git diff --statRingkasan berkas dan jumlah baris berubah tanpa isi diff.git diff --stat
git diff --name-onlyHanya nama berkas yang berubah — bahan bakar skrip pemeriksa (Pre-Commit Hook ).git diff --cached --name-only
git showSatu 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 ).

PerintahFungsiContoh
git logMenampilkan riwayat commit dari yang terbaru.git log
git log --onelineSatu baris per commit.git log --oneline
git log -n 2Membatasi jumlah commit yang tampil.git log -n 2 --oneline
git log --statMenambah ringkasan berkas per commit.git log --stat -n 3
git log --graph --onelineMenampilkan 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 -snMenghitung 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.

KebutuhanResep satu baris
Pemeriksaan terakhir sebelum commitgit diff --staged
Ringkasan singkat lima commit terakhirgit log --oneline -n 5
Peta seluruh branch dan penggabungannyagit log --graph --oneline --decorate --all
Kapan sebuah teks masuk ke kode, dan oleh siapagit log -S "diskon" --oneline dilanjutkan git blame -L 5,6 README.md
Apa yang sebenarnya berubah di branch fiturgit diff main...fitur-rilis --stat

Menelusuri riwayat memiliki satu penanda permanen: tag. Cara menandai titik rilis, memeriksa, dan membagikannya dirangkum di Perintah Tags .