Pengenalan Git dan Version Control
Apa itu Git dan Kenapa Kita Butuh Version Control?ā
Bayangkan kita sedang menulis sebuah skripsi dan kita ingin mengetahui riwayat perubahan skripsi tiap kali kita selesai bimbingan atau revisi dari dosen. Misal bab 1 pendahuluan.docs, bab 1 pendahuluan revisi 1.docs
Git adalah solusinya! Git adalah sistem version control yang ngebantu kita:
- Nyimpan setiap perubahan kode dengan rapi
- Balik ke versi sebelumnya kalau ada yang rusak
- Kerja bareng tim tanpa bentrok
- Tau siapa yang ngubah apa dan kapan
Ibarat mesin waktu buat project kita
Kenapa Git Penting Banget dalam Kolaborasi?ā
Kolaborasi Tim Jadi Gampangā
Bayangin kita kerja sama 5 orang developer lain. Tanpa Git:
- "eh saya bikin fitur login, jangan diubah ya!"
- "loh codinganku kok hilang?"
- "Siapa yang ngubah fungsi login? Sekarang error!"
Dengan Git, semua bisa kerja parallel tanpa takut bentrok!
Track Perubahan dengan Detailā
Git nyimpen history lengkap project kita:
- Siapa yang ngubah
- Kapan diubah
- Apa yang diubah
- Kenapa diubah (lewat commit message)
Backup Otomatisā
Kode tersimpan di berbagai tempat (local, remote repository). Laptop rusak? Santai, kode masih aman!
Branching untuk Fitur Baruā
Mau coba-coba fitur baru tanpa rusak kode utama? Bikin branch aja! Kalau berhasil, merge. Kalau gagal, hapus branch-nya.
Konsep Dasar Git yang Wajib Dipahamiā
Repository (Repo)ā
Repository itu kayak "folder project" yang ditrack sama Git. Ada dua jenis:
- Local Repository: Di komputer
- Remote Repository: Di server (GitHub, GitLab, dll)
Working Directory, Staging Area, dan Repositoryā
Working Directory ā Staging Area ā Repository
(edit) (add) (commit)
- Working Directory: Tempat edit file
- Staging Area: Area "antrian" sebelum commit
- Repository: Tempat Git nyimpen snapshot perubahan
Branchā
Branch itu kayak "timeline parallel". Main branch biasanya nama main atau master. Kamu bisa bikin branch baru buat develop fitur tanpa ganggu main branch.
Commitā
Commit itu kayak "save point" dalam game. Setiap commit nyimpen snapshot kondisi project di waktu tertentu.
Setup Awal Gitā
Install Gitā
# Cek apakah Git sudah terinstall
git --version
# Kalau belum, download dari https://git-scm.com
Konfigurasi Identitasā
# Set nama (akan muncul di setiap commit)
git config --global user.name "Nama kammu"
# Set email
git config --global user.email "email@example.com"
# Cek konfigurasi
git config --list
Setup SSH Key untuk GitHub (Recommended)ā
# Generate SSH key
ssh-keygen -t ed25519 -C "email@example.com"
# Copy public key
cat ~/.ssh/id_ed25519.pub
# Paste ke GitHub Settings > SSH Keys
Dasar-dasar Penggunaan Gitā
1. Inisialisasi Repositoryā
Bikin Repo Baru dari Scratchā
# Bikin folder project
mkdir my-awesome-project
cd my-awesome-project
# Inisialisasi Git
git init
# Cek status
git status
Clone Repo yang Udah Adaā
# Clone dari GitHub
git clone https://github.com/username/repo-name.git
# Atau pakai SSH (lebih aman)
git clone git@github.com:username/repo-name.git
2. Basic Workflow: Add, Commit, Pushā
Skenario: Bikin File Pertamaā
# Bikin file README
echo "# My Awesome Project" > README.md
# Cek status - file masih "untracked"
git status
# Add file ke staging area
git add README.md
# Atau add semua file sekaligus
git add .
# Commit dengan message
git commit -m "Initial commit: add README"
# Cek history
git log
Connect ke Remote Repositoryā
# Add remote origin (GitHub repo)
git remote add origin https://github.com/username/repo-name.git
# Atau kalau pakai SSH
git remote add origin git@github.com:username/repo-name.git
# Push ke GitHub
git push -u origin main
3. Daily Workflowā
# 1. Cek status project
git status
# 2. Pull update terbaru dari remote
git pull origin main
# 3. Edit file, coding as usual...
# 4. Cek apa yang berubah
git diff
# 5. Add perubahan
git add .
# 6. Commit dengan message yang jelas
git commit -m "Add user authentication feature"
# 7. Push ke remote
git push origin main
4. Branchingā
# Cek branch yang ada
git branch
# Bikin branch baru
git branch feature/user-login
# Pindah ke branch baru
git checkout feature/user-login
# Atau langsung bikin dan pindah (shortcut)
git checkout -b feature/user-login
# Coding di branch ini...
# Add, commit as usual
# Balik ke main branch
git checkout main
# Merge branch feature ke main
git merge feature/user-login
# Hapus branch yang udah ga dipake
git branch -d feature/user-login
5. Kolaborasi dengan Pull/Fetchā
# Fetch: download info terbaru tanpa merge
git fetch origin
# Pull: fetch + merge sekaligus
git pull origin main
# Kalau ada conflict, resolve manually, terus:
git add .
git commit -m "Resolve merge conflict"
Best Practices dan Tips Proā
Commit Message yang Baik - Conventional Commitā
Bad Examples:
git commit -m "fix"
git commit -m "update"
git commit -m "asdfgh"
Good Examples:
git commit -m "Fix login button alignment on mobile"
git commit -m "Add user input validation to contact form"
git commit -m "Refactor database connection code for better performance"
Format yang Recommended:
<type>: <description>
Types:
- feat: new feature
- fix: bug fix
- docs: documentation
- style: formatting
- refactor: code restructuring
- test: adding tests
- chore: maintenance tasks
Branching Strategyā
Git Flow (untuk project besar):
main: Production-ready codedevelop: Development branchfeature/*: Feature branchesrelease/*: Release preparationhotfix/*: Critical fixes
GitHub Flow (untuk project sederhana):
main: Production branchfeature/*: Feature branches- Direct PR to main