Pertemuan Pertemuan 18

Riwayat Lanjutan & Quiz 2.3

Pertemuan 18 / 32
Intermediate Modul 2.3 60 menit
Pertemuan 18

Riwayat Lanjutan & Quiz 2.3

Tujuan Pembelajaran

  • Menguasai perintah git log lanjutan dengan format custom
  • Memahami git blame dan git show untuk investigasi kode
  • Mengevaluasi pemahaman modul 2.3 melalui quiz

Materi Inti

A. Git Log Lanjutan

Git log memiliki banyak opsi untuk menampilkan history commit sesuai kebutuhan. Selain --oneline yang sudah kamu pelajari, ada opsi-opsi yang lebih powerful.

Format custom:

# Format custom - tampilkan hash singkat, author, waktu relatif, dan pesan
git log --pretty=format:"%h | %an | %ar | %s"
# Output:
# abc1234 | Budi | 2 hours ago | feat: tambah halaman login
# def5678 | Ani  | 1 day ago   | fix: perbaiki tombol submit

# Format dengan warna
git log --pretty=format:"%C(yellow)%h%C(reset) %C(blue)%an%C(reset) %s"

Filter berdasarkan waktu:

# Commit dalam rentang tanggal tertentu
git log --since="2024-01-01" --until="2024-12-31"

# Commit dalam 1 minggu terakhir
git log --since="1 week ago"

# Commit hari ini
git log --since="today"

Filter berdasarkan file:

# History perubahan file tertentu
git log -- index.html

# History dengan diff
git log -p -- index.html

B. Git Blame --- Siapa Mengubah Apa

git blame menampilkan siapa yang terakhir mengubah setiap baris dalam sebuah file, lengkap dengan hash commit dan tanggal.

# Lihat siapa mengubah setiap baris
git blame index.html
# Output:
# abc123 (Budi 2024-03-15 10:00) <h1>Toko Online</h1>
# def456 (Ani  2024-03-16 14:30) <nav>Menu</nav>
# ghi789 (Caca 2024-03-17 09:15) <footer>2024</footer>

# Blame baris tertentu saja (baris 10-20)
git blame -L 10,20 index.html

Tips: git blame bukan untuk โ€œmenyalahkanโ€ orang. Ini alat untuk memahami konteks perubahan kode dan mencari tahu siapa yang bisa ditanya tentang bagian kode tertentu.

C. Git Show & Git Shortlog

# Lihat detail sebuah commit (perubahan apa saja)
git show abc123

# Lihat file pada commit tertentu
git show abc123:index.html

# Ringkasan kontributor diurutkan berdasarkan jumlah commit
git shortlog -s -n
# Output:
#   42  Budi
#   28  Ani
#   15  Caca

Demonstrasi Live

Investigasi History Project

cd proyek-tim

# Lihat history dengan format custom
git log --pretty=format:"%h | %an | %ar | %s" -10

# Cari commit yang mengubah file tertentu
git log --oneline -- index.html

# Siapa yang mengubah README?
git blame README.md

# Detail commit tertentu
git show HEAD

# Siapa kontributor terbanyak?
git shortlog -s -n

# History minggu ini
git log --since="1 week ago" --oneline

# Kombinasi: graph + format
git log --graph --pretty=format:"%h %an %s" --all -15

Latihan Interaktif

Latihan LGB: Git Describe

Level: โ€œGit Describeโ€ (Mixed Bag - Level 5)

Buka Learn Git Branching dan ketik:

level mixed5

Tujuan: Gunakan git describe untuk melihat posisi relatif dari tag.

Solusi:

git describe main
git describe side
git describe bugFix
git commit

Info: git describe menampilkan tag terdekat yang bisa dijangkau dari sebuah ref. Formatnya: <tag>_<numCommits>_g<hash>. Misalnya v1.0.0_2_gabc123 berarti 2 commit setelah tag v1.0.0.

Latihan Terminal: Eksplorasi Riwayat

# Gunakan project yang sudah ada atau buat baru
mkdir latihan-history && cd latihan-history && git init

# Buat beberapa commit dengan author berbeda (simulasi)
echo "Baris 1" > file.txt
git add . && git commit -m "feat: tambah file utama"

echo "Baris 2" >> file.txt
git add . && git commit -m "feat: tambah baris kedua"

echo "Baris 3" >> file.txt
git add . && git commit -m "fix: perbaiki konten"

echo "Baris 4" >> file.txt
git add . && git commit -m "docs: tambah baris dokumentasi"

# Tag untuk describe
git tag -a v1.0.0 HEAD~2 -m "Release v1.0.0"

# Praktik perintah riwayat lanjutan
git log --pretty=format:"%h | %an | %ar | %s"
git log --since="1 hour ago"
git log -- file.txt
git blame file.txt
git show HEAD~1
git shortlog -s -n
git describe

Quiz Modul 2.3

Quiz ini menguji pemahaman tentang git stash, git tag, semantic versioning, dan perintah riwayat lanjutan.

Passing grade: 70% (minimal 6 dari 8 benar)

Topik yang Diuji

NoTopikJumlah Soal
1Git Stash2 soal
2Git Tag & Semantic Versioning2 soal
3Git Blame & Show2 soal
4Git Log Lanjutan2 soal

Materi yang Perlu Dikuasai

Git Stash:

  • git stash menyimpan perubahan sementara tanpa commit
  • git stash pop mengambil stash teratas dan menghapusnya dari daftar
  • git stash apply mengambil stash tanpa menghapus dari daftar
  • Digunakan saat harus pindah branch dengan perubahan yang belum selesai

Git Tag & Semantic Versioning:

  • Tag lightweight hanya pointer, annotated menyimpan pesan, author, dan tanggal
  • Semantic Versioning: MAJOR.MINOR.PATCH
  • MAJOR = breaking changes, MINOR = fitur baru kompatibel, PATCH = bug fix
  • git push origin --tags untuk push semua tag ke remote

Git Blame & Show:

  • git blame menampilkan siapa mengubah setiap baris dan kapan
  • git show menampilkan detail perubahan sebuah commit
  • git shortlog -s -n menampilkan ringkasan kontributor

Git Log Lanjutan:

  • git log --since="1 week ago" menampilkan commit 1 minggu terakhir
  • git log -- namafile menampilkan history file tertentu
  • Format custom dengan --pretty=format

Tugas Mandiri

  1. Buka project yang sudah ada dan gunakan git blame untuk melihat siapa yang mengubah setiap baris
  2. Gunakan git log dengan filter waktu untuk melihat commit minggu ini
  3. Buat format custom git log yang menampilkan hash, author, dan pesan commit
  4. Praktikkan git describe pada project yang memiliki tag

Praktik Interaktif

Selesaikan level berikut untuk memperkuat pemahaman kamu.

Learn Git Branching โ€” Level: mixed5
Buka di tab baru
Memuat Learn Git Branching...

Quiz: Review Modul 2.3

Jawab 8 pertanyaan berikut untuk menguji pemahaman kamu.

Soal 1 dari 8

Perintah git stash paling tepat digunakan ketika...