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 menjalankangit add app.js. Sekarang kamu ketikgit 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")
--- a/app.jsadalah versi lama,+++ b/app.jsversi baru.@@ -1 +1,2 @@menunjuk tempat perubahannya: di versi lama mulai baris 1, sepanjang 1 baris; di versi baru mulai baris 1, sepanjang 2 baris.- Baris berawalan
-dihapus, berawalan+ditambah. Mengubah satu baris tampil sebagai satu-lalu satu+. Baris berawalan spasi gak berubah, cuma konteks. - Baris
indexberisi kode pendek isi file lama dan baru. Boleh dilewati.
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
- Yang paling atas commit terbaru. Tiap commit punya hash 40 karakter, nama uniknya.
(HEAD -> main)artinya kamu sedang di branchmain, danmainmenunjuk ke commit ini.AuthordanDate: siapa yang membuat dan kapan. Namanya diambil dari pengaturangit config user.namedanuser.email.
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
- Terjebak di layar
git log. Kalau riwayatnya panjang, Git membukanya di pager: layar yang bisa di-scroll, dan terminalnya seperti macet. Tekanquntuk keluar. git diffkosong padahal ada perubahan. Perubahannya sudah di-add (pakaigit diff --staged), atau filenya baru dan belum pernah di-add: file untracked gak muncul digit diff.git logsebelum commit pertama. Git menjawabfatal: your current branch 'main' does not have any commits yet. Latihan ini butuh minimal 1 commit dimain, jadi commit dulu, barugit log.- Membaca diff terbalik.
-itu versi lama (a/),+itu versi baru (b/).
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.