Pertemuan Pertemuan 4

Melihat Perubahan & Membatalkan Perubahan

Pertemuan 4 / 32
Basic Modul 1.3 60 menit
Pertemuan 04

Melihat Perubahan & Membatalkan Perubahan

Tujuan Pembelajaran

  • Mampu melihat perbedaan file dengan git diff
  • Mampu membatalkan perubahan di working directory dan staging area
  • Mampu memperbaiki commit terakhir dengan --amend
  • Memahami konsep HEAD dan referensi relatif

Agenda (60 menit)

WaktuAktivitasDurasi
00:00Review pertemuan 35 min
00:05Materi: git diff10 min
00:15Materi: Membatalkan perubahan10 min
00:25Materi: HEAD & referensi relatif5 min
00:30Demonstrasi live10 min
00:40Latihan LGB + Terminal15 min
00:55Rangkuman5 min

Materi Inti

A. Git Diff β€” Melihat Perbedaan

# Lihat perubahan di working directory (belum di-add)
git diff

# Lihat perubahan yang sudah di-staging (sudah di-add)
git diff --staged

# Bandingkan 2 commit
git diff abc123 def456

# Diff untuk file tertentu saja
git diff -- index.html

Cara membaca output git diff:

diff --git a/index.html b/index.html
--- a/index.html        # versi lama
+++ b/index.html        # versi baru
@@ -1,3 +1,4 @@
 <html>
 <body>
-<h1>Halo</h1>          # baris yang DIHAPUS (merah)
+<h1>Halo Dunia</h1>    # baris yang DITAMBAHKAN (hijau)
+<p>Paragraf baru</p>   # baris baru (hijau)
 </body>

B. Membatalkan Perubahan

SITUASI                              PERINTAH
─────────────────────────────────    ──────────────────────────────
File sudah diedit, belum di-add   β†’  git restore <file>
File sudah di-add, belum commit   β†’  git restore --staged <file>
Commit terakhir salah pesan       β†’  git commit --amend -m "pesan baru"
Commit terakhir lupa tambah file  β†’  git add <file>; git commit --amend

⚠️ Peringatan: git restore <file> akan menghapus perubahan secara PERMANEN. Pastikan kamu yakin sebelum menjalankannya!

C. Konsep HEAD

  • HEAD = pointer yang menunjuk ke posisi kamu saat ini di history
  • Biasanya HEAD menunjuk ke branch aktif (misalnya main)
  • HEAD~1 = 1 commit sebelum HEAD (parent)
  • HEAD~2 = 2 commit sebelum HEAD (grandparent)
  • HEAD~n = n commit sebelum HEAD

Demonstrasi Live

cd proyek-website

# Edit file
echo "<footer>Copyright 2024</footer>" >> index.html

# Lihat diff SEBELUM add
git diff
# Terlihat baris yang ditambahkan (hijau)

# Add ke staging
git add index.html

# Lihat diff SESUDAH add β€” git diff kosong!
git diff
# Tidak ada output β€” perubahan sudah di staging

# Lihat diff di staging
git diff --staged
# Terlihat perubahan yang siap di-commit

# Keluarkan dari staging
git restore --staged index.html
git status
# Kembali ke "Changes not staged for commit"

# Batalkan perubahan sepenuhnya
git restore index.html
git status
# Clean β€” tidak ada perubahan

Demo amend:

echo "<nav>Menu</nav>" >> index.html
git add .
git commit -m "Tmbah navigasi"  # Typo!

# Perbaiki pesan commit
git commit --amend -m "Tambah navigasi"
git log --oneline -1
# Pesan sudah diperbaiki

Latihan Interaktif (15 menit)

A. Latihan Visualisasi β€” Learn Git Branching

Level: β€œReversing Changes in Git” (Ramping Up - Level 4) URL: https://learngitbranching.js.org/?locale=id_ID

Navigasi: Ketik level rampup4 di terminal LGB

Instruksi dalam Bahasa Indonesia:

  • Level ini mengajarkan perbedaan antara git reset dan git revert
  • git reset memundurkan branch ke commit sebelumnya (untuk branch lokal)
  • git revert membuat commit baru yang membatalkan perubahan (aman untuk branch yang sudah di-push)

Solusi:

git reset local~1
git checkout pushed
git revert pushed

Konsep yang dipelajari:

  • reset menghapus commit dari history (hanya untuk lokal!)
  • revert membuat commit kebalikan (aman untuk shared branch)

B. Latihan Terminal (Hands-on)

Langkah 1: Edit file dan lihat diff

cd proyek-website
echo "<p>Konten baru</p>" >> index.html
git diff

Langkah 2: Add lalu lihat diff staged

git add index.html
git diff --staged

Langkah 3: Batalkan staging

git restore --staged index.html
git status

Langkah 4: Batalkan perubahan di working directory

git restore index.html
git status
# Harus clean

⚠️ Peringatan: Setelah git restore index.html, perubahan yang belum di-commit akan hilang permanen!

Langkah 5: Buat commit lalu amend

echo "<aside>Sidebar</aside>" >> index.html
git add .
git commit -m "Tmbah sidebar"
git commit --amend -m "Tambah sidebar"
git log --oneline -1

Tugas Mandiri

  1. Latihan git diff dengan minimal 3 file berbeda
  2. Latihan git restore dan git restore --staged masing-masing 2 kali
  3. Buat commit dengan typo, perbaiki dengan --amend
  4. Di LGB: Selesaikan level β€œReversing Changes in Git” (rampup4)

Praktik Interaktif

Selesaikan level berikut untuk memperkuat pemahaman kamu.

Learn Git Branching β€” Level: rampup4
Buka di tab baru
Memuat Learn Git Branching...