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 blamebukan 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 describemenampilkan tag terdekat yang bisa dijangkau dari sebuah ref. Formatnya:<tag>_<numCommits>_g<hash>. Misalnyav1.0.0_2_gabc123berarti 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
| No | Topik | Jumlah Soal |
|---|---|---|
| 1 | Git Stash | 2 soal |
| 2 | Git Tag & Semantic Versioning | 2 soal |
| 3 | Git Blame & Show | 2 soal |
| 4 | Git Log Lanjutan | 2 soal |
Materi yang Perlu Dikuasai
Git Stash:
git stashmenyimpan perubahan sementara tanpa commitgit stash popmengambil stash teratas dan menghapusnya dari daftargit stash applymengambil 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 --tagsuntuk push semua tag ke remote
Git Blame & Show:
git blamemenampilkan siapa mengubah setiap baris dan kapangit showmenampilkan detail perubahan sebuah commitgit shortlog -s -nmenampilkan ringkasan kontributor
Git Log Lanjutan:
git log --since="1 week ago"menampilkan commit 1 minggu terakhirgit log -- namafilemenampilkan history file tertentu- Format custom dengan
--pretty=format
Tugas Mandiri
- Buka project yang sudah ada dan gunakan
git blameuntuk melihat siapa yang mengubah setiap baris - Gunakan
git logdengan filter waktu untuk melihat commit minggu ini - Buat format custom
git logyang menampilkan hash, author, dan pesan commit - Praktikkan
git describepada project yang memiliki tag
Praktik Interaktif
Selesaikan level berikut untuk memperkuat pemahaman kamu.
Quiz: Review Modul 2.3
Jawab 8 pertanyaan berikut untuk menguji pemahaman kamu.
Perintah git stash paling tepat digunakan ketika...