git log dan git diff: Lihat Riwayat Commit — Git

git log menampilkan riwayat commit, git diff menunjukkan perubahan baris per baris. Pelajari flag --oneline, --stat, dan --staged lewat latihan.

git diff menampilkan baris mana saja yang berubah, dan git log menampilkan riwayat commit, dari yang terbaru. Ingat permainan "cari perbedaan" di dua gambar yang mirip? git diff memainkannya untukmu: baris yang hilang ditandai minus, baris yang baru ditandai plus. git log itu albumnya: daftar semua snapshot yang sudah kamu simpan.

🧪 Tebakan cepat: kamu mengubah app.js, lalu menjalankan git add app.js. Sekarang kamu ketik git diff. Apa yang muncul? Tebak dulu, jawabannya ada di bagian "git diff atau git diff --staged".

git diff: baris mana yang berubah

Repository-nya berisi app.js, dan sudah punya satu commit, initial, berisi console.log("hello"). Sekarang app.js diubah: sapaannya diganti, dan ada baris baru. Belum di-add.

$ git diff
diff --git a/app.js b/app.js
index 7728117..8b926b6 100644
--- a/app.js
+++ b/app.js
@@ -1 +1,2 @@
-console.log("hello")
+console.log("halo")
+console.log("dunia")

git diff atau git diff --staged

Sekarang perubahannya di-add:

$ git add app.js
$ git diff
$ git diff --staged
diff --git a/app.js b/app.js
index 7728117..8b926b6 100644
--- a/app.js
+++ b/app.js
@@ -1 +1,2 @@
-console.log("hello")
+console.log("halo")
+console.log("dunia")

git diff kosong! Itu jawaban tebakannya. Tiap bentuk git diff membandingkan dua tempat yang berbeda:

Perintah Membandingkan Menampilkan
git diff working directory dengan staging area perubahan yang belum di-add
git diff --staged (sama dengan --cached) staging area dengan commit terakhir yang akan masuk commit berikutnya
git diff HEAD working directory dengan commit terakhir semuanya

Setelah git add, folder dan staging area sudah sama, jadi git diff gak punya apa-apa untuk ditampilkan. Cek ulang dengan git diff --staged sebelum commit.

git log: riwayat commit

Perubahan tadi di-commit dengan git commit -m "ganti sapaan". Riwayatnya sekarang:

$ git log
commit 6b4dee522cce63f48ad0c92cdb66822dd327d83b (HEAD -> main)
Author: Budi <[email protected]>
Date:   Thu Jan 1 07:01:00 2026 +0700

    ganti sapaan

commit 4ce6ce18133effe1219f1e4910ac7cb20d13a111
Author: Budi <[email protected]>
Date:   Thu Jan 1 07:00:00 2026 +0700

    initial

Versi ringkasnya, satu baris per commit:

$ git log --oneline
6b4dee5 (HEAD -> main) ganti sapaan
4ce6ce1 initial

--oneline menampilkan 7 karakter awal hash dan pesannya. 7 karakter itu sudah cukup untuk menyebut sebuah commit di perintah lain. Tambahkan angka untuk membatasi jumlahnya: git log --oneline -3 cuma menampilkan 3 commit terakhir.

📌 Isi satu commit: git show

git show 6b4dee5 menampilkan info commit itu (seperti git log) lalu diff-nya terhadap commit sebelumnya. Cocok untuk menjawab "commit ini mengubah apa saja?".

⚠️ Jebakan yang sering ketemu

TL;DR: git diff menampilkan perubahan per baris: - untuk baris lama, + untuk baris baru, dan @@ menunjuk letaknya. git diff membandingkan folder dengan staging area, jadi kosong setelah git add; git diff --staged (atau --cached) menampilkan yang akan masuk commit; git diff HEAD semuanya. git log menampilkan riwayat dari yang terbaru, dengan hash, author, tanggal, dan pesan. git log --oneline satu baris per commit, git log --oneline -3 cuma 3 commit terakhir, dan q untuk keluar dari pager.

Yang akan kamu pelajari