🌐 Baca artikel ini dalam Bahasa Inggris di sini.
📝 Catatan tentang artikel ini
Artikel ini dibuat berdasarkan catatan belajar pribadi saya tentang version control dan Git kolaborasi. Untuk membuat catatan tersebut lebih mudah dibaca dan bermanfaat — bagi saya dan orang lain — saya menggunakan bantuan AI untuk mengembangkan dan menyusunnya menjadi artikel blog. Ide, perjalanan belajar, dan pemahamannya adalah milik saya; AI membantu di bagian penulisan dan penyajiannya.
Belajar Git itu tidak harus membingungkan. Di artikel ini, saya akan menjelaskan konsep-konsep penting dalam version control dan kolaborasi menggunakan bahasa yang sederhana — bahkan dengan analogi yang bisa dipahami anak kecil sekalipun.
Apa Itu Git?
Git adalah version control system — sistem yang merekam setiap perubahan yang kamu lakukan pada file-file proyekmu.
Bayangkan Git seperti fitur save point di video game. Setiap kali kamu menyimpan (commit), Git mengambil "foto" dari kondisi proyekmu saat itu. Kalau ada yang salah, kamu bisa kembali ke foto sebelumnya.
Repository: Gudang Proyekmu
Repository (atau "repo") adalah folder yang diawasi oleh Git. Ada dua jenisnya:
- Local repository: ada di komputermu sendiri. Ruang kerja pribadimu.
- Remote repository: ada di server (GitHub, GitLab, Bitbucket). Salinan "resmi" yang bisa diakses seluruh tim.
Keduanya terhubung lewat Remote URL, sehingga kamu bisa mengirim perubahan ke remote (push) atau mengambil perubahan terbaru dari sana (pull).
git init # Mulai memantau sebuah folder
git remote add origin <url> # Hubungkan ke remote repo
git push origin main # Kirim commit ke remote
git pull origin main # Ambil update terbaru dari remote
Analogi: Local repo adalah buku sketsamu di rumah. Remote repo adalah papan pengumuman kelas — semua orang bisa melihat dan mengaksesnya.
Commit: Save Point Proyekmu
Commit adalah snapshot dari kondisi proyekmu pada satu titik waktu. Setiap commit berisi:
- Pesan yang menjelaskan apa yang berubah
- ID unik (hash)
- Timestamp
git add . # Staging semua perubahan
git commit -m "Tambah layout halaman utama" # Simpan snapshot
git log --oneline # Lihat riwayat commit
Tulis pesan commit yang jelas dan bermakna. Dirimu di masa depan — dan rekan timmu — akan berterima kasih.
Checkout, Reset, Revert: Mesin Waktu Git
Ketiga perintah ini berinteraksi dengan riwayat commit — tapi dengan cara yang sangat berbeda:
git checkout — Kunjungi Masa Lalu (Sementara)
Seperti mesin waktu dengan tiket visitor. Kamu bisa melihat kondisi kode di commit lama tanpa mengubah apapun secara permanen.
git checkout <commit-hash> # Kunjungi commit lama
git checkout main # Kembali ke sekarang
git checkout -b branch-baru <hash> # Buat branch baru dari commit lama
git reset — Hapus Riwayat
Kembali ke commit tertentu dan menghapus semua yang terjadi setelahnya. Gunakan dengan hati-hati — terutama jika sudah di-push ke remote.
git reset --soft HEAD~1 # Undo commit terakhir, perubahan tetap ada (staged)
git reset --hard HEAD~1 # Undo commit terakhir, perubahan ikut terhapus
git revert — Undo yang Aman
Membuat commit baru yang membalikkan efek dari commit sebelumnya. Riwayat tetap utuh — pilihan paling aman saat bekerja di repo bersama.
git revert <commit-hash> # Undo sebuah commit dengan aman
Panduan praktis: Kalau sudah di-push, gunakan
revert. Kalau belum,resettidak masalah.
Branch: Jalur Paralel untuk Kode
Branch adalah jalur pengembangan yang terpisah. Kamu bisa membuat branch untuk mengerjakan fitur atau perbaikan bug tanpa menyentuh branch main yang stabil.
git switch -c feature/dark-mode # Buat dan pindah ke branch baru
git switch main # Kembali ke main
git branch -d feature/dark-mode # Hapus branch yang sudah di-merge
git push origin feature/dark-mode # Push branch ke remote
Konvensi penamaan branch yang umum:
| Tipe | Prefix | Contoh |
|---|---|---|
| Fitur baru | feature/ |
feature/dark-mode |
| Perbaikan bug | fix/ |
fix/login-redirect |
| Hotfix mendesak | hotfix/ |
hotfix/payment-crash |
Analogi: Bayangkan sungai yang mengalir. Branch adalah anak sungai yang memisah diri untuk menjelajahi jalur lain — dan nantinya bergabung kembali ke sungai utama.
Stash: Tombol Pause untuk Pekerjaan yang Belum Selesai
Kamu sedang di tengah-tengah mengerjakan sebuah fitur. Kode masih berantakan, belum siap untuk di-commit. Tiba-tiba team lead bilang: "Bisa tolong perbaiki bug itu di branch main sekarang?"
Kamu tidak bisa switch branch dengan perubahan yang belum di-commit. Tapi kamu juga belum siap commit. Jawabannya: simpan dulu dengan stash.
Analogi: Kamu sedang menggambar tapi meja harus dipakai untuk hal lain. Kamu dengan rapi menyimpan gambar dan pensil ke dalam laci. Nanti kamu buka lacinya dan lanjut persis dari titik yang sama.
git stash # Simpan pekerjaan sementara
git switch fix/some-bug # Bebas pindah branch
# ... perbaiki bug, commit, balik lagi ...
git switch feature/dark-mode
git stash pop # Kembalikan pekerjaanmu
Menambahkan label membuat stash lebih mudah dikelola:
git stash push -m "WIP: palet dark mode" # Stash dengan nama
git stash list # Lihat semua stash
git stash pop # Kembalikan stash terbaru
git stash apply stash@{1} # Kembalikan stash tertentu (tetap di list)
git stash drop stash@{1} # Hapus stash tertentu
git stash -u # Sertakan file baru yang belum di-track
Merge & Pull Request: Menyatukan Pekerjaan
Saat fiturmu selesai, kamu merge branch-mu kembali ke main.
git switch main
git merge feature/dark-mode
Di GitHub/GitLab, proses ini biasanya dilakukan lewat Pull Request (PR):
- Push branch-mu dan buka PR
- Rekan tim me-review kode dan meninggalkan komentar
- Setelah disetujui, kode di-merge
Tiga Opsi Merge
| Metode | Yang Terjadi |
|---|---|
| Merge commit | Semua commit dipertahankan + merge commit ditambahkan |
| Squash and merge | Semua commit digabung jadi satu |
| Rebase and merge | Commit diputar ulang di atas main, tanpa merge commit |
Menangani Conflict
Ketika dua branch mengedit baris yang sama, Git tidak bisa merge otomatis. Kamu akan melihat:
<<<<<<< HEAD
const msg = "Halo!";
=======
const msg = "Hai semuanya!";
>>>>>>> feature/dark-mode
Selesaikan secara manual, lalu:
git add <file>
git commit
Code Review: Pintu Gerbang Kualitas
Sebelum PR di-merge, seseorang akan me-review kodenya. Reviewer yang baik memeriksa:
- Apakah logikanya benar?
- Apakah kode mudah dibaca dan penamaannya jelas?
- Apakah ada test yang cukup?
- Apakah kode lebih kompleks dari yang seharusnya?
- Apakah sesuai dengan style guideline tim?
Code review bukan sekadar mencari kesalahan — ini juga cara pengetahuan menyebar di seluruh tim. Jangan lupa juga memberikan pujian ketika kode sudah ditulis dengan baik.
Fork & Clone: Berkontribusi Tanpa Akses
Forking menyalin repo orang lain ke akun GitHub-mu. Cloning menyalin repo ke komputer lokalmu.
Alur kontribusi open source yang umum:
# 1. Fork di GitHub (klik tombol Fork)
# 2. Clone fork-mu
git clone https://github.com/username-kamu/nama-proyek.git
# 3. Tambahkan repo asli sebagai upstream
git remote add upstream https://github.com/pemilik-asli/nama-proyek.git
# 4. Buat branch, buat perubahan, push
git switch -c fix/typo-readme
git add . && git commit -m "Perbaiki typo di README"
git push origin fix/typo-readme
# 5. Buka Pull Request di GitHub
Sinkronisasi Fork-mu
git fetch upstream
git switch main
git merge upstream/main
git push origin main
Perbedaan Fork vs Clone: Fork menyalin ke akun GitHub-mu (remote). Clone menyalin ke komputermu (lokal). Keduanya tidak mempengaruhi repo asli.
Tips untuk Mulai Berkontribusi
Kalau kamu baru ingin terjun ke open source:
- Mulai dari yang kecil — perbaiki typo di dokumentasi, tambahkan komentar, perbaiki README. Jangan langsung menyerang bug paling kompleks.
-
Pelajari ekosistem proyek — baca
README.md,CONTRIBUTING.md, dan riwayat commit untuk memahami konvensi yang digunakan. - Ikuti konvensi yang ada — cara menulis commit, penamaan branch, format PR description.
Aplikasi Git GUI: Tidak Harus Selalu Pakai Terminal
Mengetahui perintahnya membuatmu jadi developer yang lebih kuat — tapi kamu tidak harus mengetik di terminal setiap hari. Ada banyak aplikasi GUI (Graphical User Interface) yang memungkinkan kamu commit, branch, merge, dan stash hanya dengan klik, plus visualisasi riwayat repo yang mudah dipahami.
Berikut yang paling populer:
| Aplikasi | Platform | Harga | Cocok Untuk |
|---|---|---|---|
| GitHub Desktop | Mac, Windows | Gratis | Pemula, pengguna GitHub |
| GitLens (ext. VS Code) | Semua OS | Gratis / Berbayar | Developer yang sehari-hari di VS Code/Cursor |
| GitKraken | Mac, Win, Linux | Gratis (terbatas) / Berbayar | Power user visual |
| Fork | Mac, Windows | Gratis trial / ~$50 | Keseimbangan kecepatan & fitur |
| Sourcetree | Mac, Windows | Gratis | Pengguna Atlassian/Bitbucket |
GitHub Desktop adalah yang paling sederhana — dibuat oleh GitHub, fokus pada hal-hal esensial. GitLens adalah ekstensi VS Code yang menambahkan inline blame, visual commit graph, dan manajemen stash langsung di dalam editor-mu. GitKraken punya tampilan commit graph yang keren dan fitur drag-and-drop untuk merge. Fork menawarkan keseimbangan yang baik antara kecepatan dan fitur. Sourcetree (buatan Atlassian) gratis dan kaya fitur, terutama kalau kamu pakai Bitbucket.
Meskipun pakai aplikasi GUI sehari-hari, memahami perintah dasarnya tetap penting — untuk debugging dan bekerja di server yang tidak punya GUI. Anggap aplikasi GUI sebagai lapisan produktivitas di atas pengetahuan Git-mu, bukan penggantinya.
Ringkasan
| Konsep | Singkatnya |
|---|---|
| Repository | Gudang untuk file dan riwayat proyekmu |
| Commit | Snapshot tersimpan dengan pesan |
| Checkout | Kunjungi commit lama sementara |
| Reset | Hapus riwayat commit (hati-hati) |
| Revert | Undo commit dengan aman |
| Branch | Jalur pengembangan terpisah |
| Stash | Simpan sementara pekerjaan yang belum selesai |
| Merge | Gabungkan dua branch |
| Pull Request | Permintaan formal untuk review dan merge |
| Fork | Salin repo orang lain ke akunmu |
| Clone | Salin repo ke komputer lokalmu |
Mulai dari yang kecil, commit sesering mungkin, dan jangan takut membuat branch baru. Satu commit pada satu waktu. 🚀
Originally published as a series (Git for Everyone) at: What Is Git, Repository, and Commit | Traveling Through Time — Checkout, Reset, and Revert
| Branches, Stash, and Git Workflow | Merge, Pull Requests, and Code Reviews | Fork, Clone, and Open Source Collaboration | Git GUI Apps — You Don't Have to Use the Terminal
Top comments (0)