Git & GitHub untuk Pemula
Pengantar
Bayangin kamu nulis novel. Setiap hari kamu edit, tambah, hapus paragraf. Suatu hari kamu sadar: "Eh, versi kemarin lebih bagus deh." Tapi udah ke-save. Hilang.
Git adalah mesin waktu untuk kode kamu. Setiap perubahan yang kamu "commit" tersimpan selamanya. Mau balik ke versi 3 hari lalu? Bisa. Mau lihat siapa yang nulis baris ini? Bisa. Mau kerja bareng 10 orang tanpa saling timpa? Bisa.
GitHub adalah "Google Drive"-nya Git. Tempat kamu simpan kode online, kolaborasi, dan pamer portofolio.
1.1 Instalasi Git
Windows
Download dari git-scm.com, install, next-next-finish.
Mac
brew install gitLinux (Ubuntu/Debian)
sudo apt install gitVerifikasi
git --version
# git version 2.43.0 (atau versi terbaru)Setup Identitas (WAJIB, cuma sekali)
git config --global user.name "Nama Kamu"
git config --global user.email "email@kamu.com"Ini bukan login. Ini cuma label yang nempel di setiap commit kamu — kayak tanda tangan.
1.2 Konsep Dasar Git
Analogi: Foto Album
| Konsep Git | Analogi |
|---|---|
| Working Directory | Meja kerja — tempat kamu edit file |
| Staging Area | Meja foto — file yang siap difoto |
| Repository | Album foto — kumpulan semua foto (commit) |
| Commit | Satu foto — snapshot kode di satu waktu |
Alur Kerja Git
[Edit file] → git add → [Staging] → git commit → [Repository]
↑ |
└────────────── git checkout ←───────────────────────┘
- Kamu edit file di working directory
- Kamu pilih file mana yang mau di-commit (
git add) - Kamu commit — Git ambil "foto" dari semua file di staging
Kenapa Ada Staging?
Karena kadang kamu edit 5 file, tapi cuma mau commit 2. Staging = filter.
1.3 Perintah Dasar
Membuat Repository Baru
# Buat folder project
mkdir project-pertama
cd project-pertama
# Inisialisasi Git
git initSekarang folder ini punya "kekuatan" Git. Ada folder .git tersembunyi yang nyimpan semua history.
Melihat Status
git statusIni perintah yang paling sering kamu pakai. Dia kasih tahu:
- File mana yang berubah (merah = belum di-staging)
- File mana yang siap di-commit (hijau = sudah di-staging)
- File baru yang belum di-track
Menambahkan File ke Staging
# Tambah satu file
git add index.html
# Tambah semua file yang berubah
git add .
# Tambah file tertentu pakai pattern
git add *.jsMembuat Commit
git commit -m "Pesan yang menjelaskan perubahan"Tips pesan commit yang bagus:
- ❌
"update"— update apanya? - ❌
"fix bug"— bug yang mana? - ✅
"tambah validasi email di form registrasi" - ✅
"fix: tombol login tidak responsive di mobile"
Melihat History
# Semua commit
git log
# Versi ringkas (satu baris per commit)
git log --oneline
# Dengan grafik branch
git log --oneline --graph --all⚠️ Jebakan
# JANGAN commit file sensitif!
# Password, API key, .env — JANGAN masuk Git
# Buat file .gitignore untuk exclude file
echo "node_modules/" >> .gitignore
echo ".env" >> .gitignore
echo "*.log" >> .gitignore1.4 Branching — Kerja Paralel
Analogi: Jalur Kereta
Branch itu kayak jalur kereta yang bercabang. Kereta utama (main) tetap jalan. Kamu bikin jalur baru untuk eksperimen. Kalau berhasil, gabungkan kembali. Kalau gagal, buang jalurnya — kereta utama nggak terpengaruh.
Membuat & Pindah Branch
# Lihat semua branch
git branch
# Buat branch baru
git branch fitur-login
# Pindah ke branch itu
git checkout fitur-login
# Shortcut: buat + pindah sekaligus
git checkout -b fitur-loginMerge — Menggabungkan Branch
# Pindah ke main dulu
git checkout main
# Gabungkan fitur-login ke main
git merge fitur-loginHapus Branch (setelah merge)
git branch -d fitur-loginKapan Pakai Branch?
- Fitur baru →
fitur-nama-fitur - Perbaikan bug →
fix-deskripsi-bug - Eksperimen →
coba-teknologi-baru
Aturan emas: Jangan pernah kerja langsung di main. Selalu buat branch.
1.5 Merge Conflict — Ketika Dua Orang Edit Baris yang Sama
Analogi
Kamu dan teman sama-sama edit baris ke-5 di file yang sama. Git bingung: "Mau pakai versi siapa?" Ini namanya conflict.
Tampilan Conflict
<<<<<<< HEAD
const warna = "merah";
=======
const warna = "biru";
>>>>>>> fitur-tema- Antara
<<<<<<< HEADdan======== versi kamu (branch saat ini) - Antara
=======dan>>>>>>> fitur-tema= versi dari branch yang di-merge
Cara Resolve
- Buka file yang conflict
- Pilih versi yang benar (atau gabungkan keduanya)
- Hapus marker
<<<<<<<,=======,>>>>>>> - Save, lalu:
git add file-yang-conflict.js
git commit -m "resolve conflict: pilih warna biru untuk tema"Tips Menghindari Conflict
- Commit sering (jangan numpuk perubahan besar)
- Pull sebelum mulai kerja
- Komunikasi sama tim: "Gue lagi edit file X ya"
1.6 GitHub — Remote Repository
Analogi
Git = buku catatan pribadi di meja kamu. GitHub = perpustakaan online tempat kamu simpan salinan buku itu, dan orang lain bisa baca/kontribusi.
Membuat Akun GitHub
- Buka github.com
- Sign up (gratis)
- Verifikasi email
Menghubungkan Local ke GitHub
# 1. Buat repository baru di GitHub (klik tombol "New")
# 2. Copy URL repository-nya
# 3. Di terminal:
git remote add origin https://github.com/username/nama-repo.git
# 4. Push kode pertama kali
git push -u origin mainPush & Pull
# Upload perubahan ke GitHub
git push
# Download perubahan dari GitHub (misal teman sudah push)
git pullClone — Download Repository yang Sudah Ada
git clone https://github.com/username/nama-repo.gitIni otomatis:
- Download semua file
- Download semua history
- Setup remote
origin
1.7 Pull Request (PR) — Kolaborasi Profesional
Analogi
PR itu kayak "proposal perubahan". Kamu bilang: "Hei, gue udah bikin fitur X di branch ini. Tolong review dan approve ya sebelum masuk ke main."
Alur PR
1. Buat branch → kerjakan fitur
2. Push branch ke GitHub
3. Buka GitHub → klik "New Pull Request"
4. Tulis deskripsi: apa yang berubah, kenapa
5. Reviewer baca kode, kasih komentar
6. Kalau OK → Merge
7. Hapus branch
Cara Buat PR
# Di local
git checkout -b fitur-dark-mode
# ... edit file ...
git add .
git commit -m "tambah dark mode toggle"
git push -u origin fitur-dark-modeLalu buka GitHub → akan muncul banner "Compare & pull request" → klik → isi deskripsi → Create.
Template Deskripsi PR yang Bagus
## Apa yang berubah?
- Tambah toggle dark mode di header
- Simpan preferensi user di localStorage
## Kenapa?
User minta fitur dark mode (issue #12)
## Screenshot
[lampirkan screenshot sebelum/sesudah]
## Cara test
1. Buka halaman utama
2. Klik icon bulan di header
3. Halaman berubah ke dark mode1.8 Fork & Open Source
Analogi
Fork = fotokopi buku orang lain ke akun kamu. Kamu bisa coret-coret sesuka hati tanpa mengganggu buku aslinya. Kalau coretan kamu bagus, kamu bisa kirim "surat" (PR) ke pemilik asli: "Hei, mau nggak pakai coretan gue?"
Alur Kontribusi Open Source
1. Fork repository (klik tombol Fork di GitHub)
2. Clone fork kamu ke local
3. Buat branch, kerjakan perubahan
4. Push ke fork kamu
5. Buat PR dari fork kamu → ke repo asli
6. Maintainer review → merge (atau minta revisi)
# Clone fork kamu
git clone https://github.com/KAMU/repo-orang.git
cd repo-orang
# Tambah remote ke repo asli (untuk sync)
git remote add upstream https://github.com/ASLI/repo-orang.git
# Sync fork kamu dengan repo asli
git fetch upstream
git merge upstream/main1.9 .gitignore — File yang Tidak Boleh Masuk Git
File yang WAJIB di-ignore:
# Dependencies (bisa di-install ulang)
node_modules/
vendor/
# Environment variables (RAHASIA!)
.env
.env.local
.env.production
# Build output (bisa di-generate ulang)
dist/
build/
.next/
out/
# OS files
.DS_Store
Thumbs.db
# IDE settings (preferensi pribadi)
.vscode/
.idea/
# Logs
*.log
npm-debug.log*Kenapa?
node_modules/→ ribuan file, bisa di-install ulang pakainpm install.env→ berisi password/API key. Kalau ke-push, BAHAYAdist/→ hasil build, bisa di-generate ulang
⚠️ Jebakan
Kalau file sudah terlanjur di-commit, menambahkannya ke .gitignore tidak akan menghapusnya dari Git. Kamu harus:
# Hapus dari Git (tapi tetap ada di folder)
git rm --cached .env
git commit -m "hapus .env dari tracking"1.10 Perintah Berguna Lainnya
Membatalkan Perubahan
# Batalkan perubahan di file (belum di-staging)
git checkout -- nama-file.js
# Keluarkan file dari staging (sudah git add, belum commit)
git reset HEAD nama-file.js
# Batalkan commit terakhir (perubahan tetap ada di file)
git reset --soft HEAD~1
# Batalkan commit terakhir (perubahan HILANG — hati-hati!)
git reset --hard HEAD~1Stash — Simpan Sementara
# Simpan perubahan sementara (tanpa commit)
git stash
# Lihat daftar stash
git stash list
# Ambil kembali
git stash popKapan pakai? Kamu lagi ngerjain fitur A, tiba-tiba harus fix bug urgent. Stash dulu kerjaan A, fix bug, commit, lalu pop stash.
Melihat Perubahan
# Lihat apa yang berubah (belum di-staging)
git diff
# Lihat apa yang sudah di-staging
git diff --staged
# Lihat perubahan di commit tertentu
git show abc1234Alias — Shortcut
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm "commit -m"
git config --global alias.lg "log --oneline --graph --all"Sekarang bisa pakai:
git st # = git status
git co main # = git checkout main
git lg # = git log --oneline --graph --all1.11 GitHub Pages — Deploy Website Gratis
Langkah
- Push kode website (HTML/CSS/JS) ke repository
- Buka Settings → Pages
- Source: pilih branch
main, folder/ (root)atau/docs - Save → tunggu 1-2 menit
- Website live di
https://username.github.io/nama-repo
Untuk Project Next.js/React (Static Export)
# Di next.config.js, tambah:
# output: 'export'
npm run build
# Hasil di folder 'out/'
# Push folder out/ atau pakai GitHub Actions1.12 GitHub Actions — Otomasi
Analogi
GitHub Actions = robot yang otomatis jalan setiap kamu push. Bisa disuruh: test kode, build, deploy, kirim notifikasi — apapun.
Contoh: Auto Deploy ke GitHub Pages
Buat file .github/workflows/deploy.yml:
name: Deploy to GitHub Pages
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
- run: npm run build
- uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./outSetiap kamu push ke main, robot ini otomatis build dan deploy!
1.13 Best Practices
Commit Messages
Pakai format Conventional Commits:
feat: tambah fitur dark mode
fix: perbaiki bug login di mobile
docs: update README dengan instruksi install
style: rapikan indentasi di header.tsx
refactor: pisahkan logic auth ke file terpisah
test: tambah unit test untuk fungsi hitungDiskon
chore: update dependencies
Branching Strategy (untuk tim)
main ← production (yang user lihat)
└── develop ← development (gabungan semua fitur)
├── fitur-login
├── fitur-cart
└── fix-responsive
Aturan Emas
- Commit sering — lebih baik 10 commit kecil daripada 1 commit raksasa
- Jangan commit file yang bisa di-generate (node_modules, build, dist)
- Jangan commit rahasia (.env, API key, password)
- Tulis pesan commit yang jelas — future-you akan berterima kasih
- Selalu buat branch untuk fitur/fix baru
- Pull sebelum push — hindari conflict
- Review PR sebelum merge — 4 mata lebih baik dari 2
1.14 Cheat Sheet
| Perintah | Fungsi |
|---|---|
git init | Inisialisasi repo baru |
git clone URL | Download repo dari GitHub |
git status | Lihat status file |
git add . | Staging semua perubahan |
git commit -m "msg" | Buat commit |
git push | Upload ke GitHub |
git pull | Download dari GitHub |
git branch nama | Buat branch baru |
git checkout nama | Pindah branch |
git checkout -b nama | Buat + pindah branch |
git merge nama | Gabungkan branch |
git log --oneline | Lihat history ringkas |
git diff | Lihat perubahan |
git stash | Simpan sementara |
git remote -v | Lihat remote URL |
🏋️ Challenge
Challenge 1: First Commit
- Buat folder
latihan-git git init- Buat file
hello.txtdengan isi "Halo Git!" - Add dan commit dengan pesan yang bagus
- Buat perubahan, commit lagi
- Lihat history dengan
git log --oneline
Challenge 2: Branching
- Dari challenge 1, buat branch
fitur-baru - Di branch itu, tambah file
fitur.txt - Commit
- Pindah ke
main - Merge
fitur-barukemain - Hapus branch
fitur-baru
Challenge 3: GitHub
- Buat repository baru di GitHub
- Push project dari challenge 1 & 2 ke GitHub
- Edit file langsung di GitHub (klik icon pensil)
- Pull perubahan ke local
- Buat branch baru, push, lalu buat Pull Request
Challenge 4: Kolaborasi (butuh teman/akun kedua)
- Fork repository teman
- Clone fork kamu
- Buat branch, tambah perubahan
- Push dan buat PR ke repo teman
- Minta teman review dan merge
Penutup
Git dan GitHub bukan cuma tools — ini bahasa universal developer. Setiap perusahaan tech pakai Git. Setiap project open source ada di GitHub. Dengan menguasai ini, kamu bisa:
- Kolaborasi dengan developer manapun di dunia
- Punya portofolio yang bisa dilihat recruiter
- Kontribusi ke project open source
- Tidak pernah kehilangan kode lagi
Next step: Coba kontribusi ke project open source pertamamu! Mulai dari yang kecil: fix typo di dokumentasi, tambah terjemahan, atau improve README.
Sudah paham materi ini?
Tandai sebagai selesai untuk melacak progress-mu.