Tutorial Git Dasar
Tutorial Git Dasar untuk Development
1. Apa Itu Git?
Git adalah tools untuk mengelola versi source code. Dengan Git, developer bisa:
- Menyimpan riwayat perubahan kode
- Bekerja dalam tim
- Membuat branch fitur
- Menggabungkan kode dari beberapa developer
- Mengembalikan kode ke versi sebelumnya
- Sinkronisasi kode dengan repository remote seperti GitHub, GitLab, atau Bitbucket
2. Istilah Penting Git
| Istilah | Penjelasan |
|---|---|
| Repository / Repo | Folder project yang dikelola oleh Git |
| Commit | Catatan perubahan kode |
| Branch | Jalur pengembangan terpisah |
| Merge | Menggabungkan branch |
| Clone | Mengambil repository dari remote ke lokal |
| Pull | Mengambil perubahan terbaru dari remote |
| Push | Mengirim perubahan lokal ke remote |
| Remote | Repository yang ada di server, misalnya GitHub/GitLab |
| Origin | Nama default remote repository |
| Main / Master | Branch utama project |
| Staging Area | Area sementara sebelum commit |
3. Install Git
Linux
sudo apt update
sudo apt install git
Untuk Fedora/AlmaLinux/RHEL:
sudo dnf install git
Windows
Download Git dari:
https://git-scm.com/download/win
Setelah install, gunakan Git Bash atau terminal biasa.
MacOS
brew install git
Cek versi Git:
git --version
4. Konfigurasi Awal Git
Setelah Git terinstall, set nama dan email:
git config --global user.name "Nama Anda"
git config --global user.email "email@anda.com"
Cek konfigurasi:
git config --list
Contoh:
git config --global user.name "Sena Turana"
git config --global user.email "sena@example.com"
5. Clone Repository
Clone digunakan untuk mengambil project dari remote repository ke komputer lokal.
Contoh:
git clone https://github.com/user/nama-project.git
Masuk ke folder project:
cd nama-project
Cek status repository:
git status
6. Melihat Remote Repository
Untuk melihat repository remote:
git remote -v
Output contoh:
origin https://github.com/user/nama-project.git (fetch)
origin https://github.com/user/nama-project.git (push)
7. Alur Kerja Git yang Sering Dipakai
Alur paling umum dalam development:
git pull
git checkout -b nama-branch
# edit kode
git status
git add .
git commit -m "pesan commit"
git push origin nama-branch
Setelah itu biasanya buat Merge Request atau Pull Request di GitHub/GitLab.
8. Mengecek Status Perubahan
Gunakan:
git status
Contoh output:
modified: src/App.java
untracked files: README.md
Artinya ada file yang berubah atau file baru yang belum masuk Git.
9. Menambahkan File ke Staging Area
Menambahkan semua perubahan:
git add .
Menambahkan file tertentu saja:
git add src/App.java
Menambahkan beberapa file:
git add file1.java file2.java
10. Membuat Commit
Commit digunakan untuk menyimpan snapshot perubahan.
git commit -m "Menambahkan fitur login"
Contoh pesan commit yang baik:
git commit -m "Fix validasi form login"
git commit -m "Add API untuk mengambil data tiket"
git commit -m "Update dokumentasi instalasi"
Hindari pesan commit seperti:
git commit -m "update"
git commit -m "fix"
git commit -m "coba"
11. Push ke Remote Repository
Push digunakan untuk mengirim commit dari lokal ke remote.
git push origin nama-branch
Contoh:
git push origin feature/login
Jika sedang di branch yang sama dan upstream sudah terset:
git push
Push pertama kali untuk branch baru:
git push -u origin feature/login
Setelah itu cukup:
git push
12. Pull dari Remote Repository
Pull digunakan untuk mengambil update terbaru dari remote.
git pull
Atau lebih spesifik:
git pull origin main
Contoh sebelum mulai kerja:
git checkout main
git pull origin main
Ini memastikan branch main lokal sudah paling baru.
13. Branching
Branch digunakan agar development tidak langsung mengubah branch utama.
Melihat daftar branch:
git branch
Melihat semua branch termasuk remote:
git branch -a
Membuat branch baru:
git branch feature/login
Pindah ke branch:
git checkout feature/login
Membuat sekaligus pindah ke branch baru:
git checkout -b feature/login
Alternatif modern:
git switch -c feature/login
Pindah branch:
git switch main
14. Contoh Penamaan Branch
Beberapa pola nama branch yang umum:
feature/login
feature/ticket-classification
bugfix/fix-error-login
hotfix/security-patch
release/v1.0.0
chore/update-dependency
Penjelasan:
| Prefix | Fungsi |
|---|---|
| feature | Untuk fitur baru |
| bugfix | Untuk perbaikan bug biasa |
| hotfix | Untuk perbaikan urgent di production |
| release | Untuk persiapan rilis |
| chore | Untuk pekerjaan teknis kecil |
15. Merge Branch
Merge digunakan untuk menggabungkan perubahan dari branch lain.
Contoh: ingin menggabungkan branch feature/login ke main.
Pindah ke branch tujuan:
git checkout main
Ambil update terbaru:
git pull origin main
Merge branch fitur:
git merge feature/login
Push hasil merge:
git push origin main
16. Merge dari Main ke Branch Feature
Saat sedang kerja di branch fitur, branch main mungkin sudah berubah karena update dari developer lain.
Contoh posisi sedang di branch:
feature/login
Ambil update dari main:
git checkout main
git pull origin main
Balik ke branch fitur:
git checkout feature/login
Merge main ke branch fitur:
git merge main
Jika tidak ada conflict, lanjut kerja seperti biasa.
17. Conflict
Conflict terjadi ketika Git tidak bisa otomatis menggabungkan perubahan.
Contoh:
CONFLICT (content): Merge conflict in src/App.java
Cek file conflict:
git status
Di dalam file biasanya ada tanda seperti ini:
<<<<<<< HEAD
kode versi branch saat ini
=======
kode versi branch yang digabung
>>>>>>> main
Pilih kode yang benar, lalu hapus tanda conflict tersebut.
Setelah selesai:
git add .
git commit -m "Resolve merge conflict"
Jika conflict terjadi saat pull atau merge, setelah diselesaikan tetap lakukan commit.
18. Membatalkan Perubahan
Membatalkan perubahan file yang belum di-add
git checkout -- nama-file
Contoh:
git checkout -- src/App.java
Atau versi modern:
git restore src/App.java
Membatalkan semua perubahan lokal yang belum di-add
git restore .
Mengeluarkan file dari staging area
Jika sudah terlanjur git add, gunakan:
git restore --staged nama-file
Atau semua file:
git restore --staged .
19. Melihat Riwayat Commit
Melihat log commit:
git log
Versi ringkas:
git log --oneline
Contoh output:
a1b2c3d Add login API
e4f5g6h Fix validation error
i7j8k9l Initial commit
Log dengan grafik branch:
git log --oneline --graph --all
20. Melihat Perubahan File
Melihat perubahan yang belum di-add:
git diff
Melihat perubahan yang sudah di-add:
git diff --staged
21. Membuat Repository Baru dari Folder Lokal
Masuk ke folder project:
cd nama-project
Inisialisasi Git:
git init
Tambahkan file:
git add .
Commit pertama:
git commit -m "Initial commit"
Tambahkan remote:
git remote add origin https://github.com/user/nama-project.git
Push ke remote:
git branch -M main
git push -u origin main
22. Menghapus Branch
Menghapus branch lokal:
git branch -d nama-branch
Jika branch belum di-merge dan tetap ingin dihapus:
git branch -D nama-branch
Menghapus branch remote:
git push origin --delete nama-branch
Contoh:
git push origin --delete feature/login
23. Stash
Stash digunakan untuk menyimpan perubahan sementara tanpa commit.
Misalnya sedang edit kode, tapi harus pindah branch cepat.
Simpan perubahan:
git stash
Lihat daftar stash:
git stash list
Ambil kembali perubahan terakhir:
git stash pop
Ambil stash tanpa menghapus dari daftar stash:
git stash apply
Hapus semua stash:
git stash clear
Contoh workflow:
git status
git stash
git checkout main
git pull origin main
git checkout feature/login
git stash pop
24. Rebase
Rebase digunakan untuk memindahkan commit branch kita agar seolah-olah dibuat dari commit terbaru branch lain.
Contoh:
git checkout feature/login
git fetch origin
git rebase origin/main
Jika ada conflict:
# selesaikan conflict di file
git add .
git rebase --continue
Membatalkan rebase:
git rebase --abort
Catatan:
Gunakan rebase dengan hati-hati, terutama kalau branch sudah dipakai bersama oleh orang lain.
Untuk pemula, biasanya lebih aman pakai merge.
25. Fetch
Fetch mengambil data terbaru dari remote, tetapi tidak langsung menggabungkan ke branch lokal.
git fetch origin
Setelah fetch, bisa lihat branch remote:
git branch -a
Perbedaan:
git fetch
hanya mengambil data.
git pull
mengambil data lalu langsung merge/rebase ke branch aktif.
Secara sederhana:
git pull = git fetch + git merge
26. Pull Request / Merge Request
Dalam kerja tim, biasanya developer tidak langsung push ke main.
Workflow umum:
- Pull branch utama
- Buat branch fitur
- Coding
- Commit
- Push branch
- Buat Pull Request / Merge Request
- Code review
- Merge ke branch utama
Contoh:
git checkout main
git pull origin main
git checkout -b feature/chatbot-api
# coding
git add .
git commit -m "Add chatbot API endpoint"
git push -u origin feature/chatbot-api
Setelah itu buka GitHub/GitLab, lalu buat Pull Request atau Merge Request.
27. Git Ignore
File .gitignore digunakan agar file tertentu tidak ikut masuk Git.
Contoh .gitignore untuk Java/Spring Boot:
target/
*.class
*.log
.env
.idea/
.vscode/
Contoh .gitignore untuk Node.js:
node_modules/
dist/
.env
npm-debug.log
Contoh .gitignore untuk Python:
__pycache__/
*.pyc
venv/
.env
Jika file sudah terlanjur masuk Git, .gitignore tidak otomatis menghapusnya dari tracking.
Gunakan:
git rm --cached nama-file
Contoh:
git rm --cached .env
git commit -m "Remove env file from git tracking"
28. Melihat File yang Sedang Dilacak Git
git ls-files
29. Mengganti Nama Branch
Mengganti nama branch lokal:
git branch -m nama-baru
Contoh saat sedang berada di branch tersebut:
git branch -m feature/new-login
Jika ingin rename branch lama ke branch baru:
git branch -m nama-lama nama-baru
Push branch baru:
git push -u origin nama-baru
Hapus branch lama di remote:
git push origin --delete nama-lama
30. Reset Commit
Soft Reset
Menghapus commit terakhir, tapi perubahan tetap ada di staging area.
git reset --soft HEAD~1
Mixed Reset
Menghapus commit terakhir, perubahan tetap ada tapi keluar dari staging area.
git reset --mixed HEAD~1
Atau:
git reset HEAD~1
Hard Reset
Menghapus commit dan perubahan secara permanen.
git reset --hard HEAD~1
Hati-hati menggunakan --hard, karena perubahan bisa hilang.
31. Revert Commit
Revert membuat commit baru untuk membatalkan commit tertentu.
Lebih aman daripada reset, terutama untuk branch yang sudah dipush.
Cari commit:
git log --oneline
Revert:
git revert commit_id
Contoh:
git revert a1b2c3d
32. Cherry Pick
Cherry-pick digunakan untuk mengambil satu commit tertentu dari branch lain.
git cherry-pick commit_id
Contoh:
git cherry-pick a1b2c3d
Biasanya dipakai jika hanya ingin mengambil satu perbaikan kecil dari branch lain.
33. Tag
Tag biasanya digunakan untuk menandai versi release.
Membuat tag:
git tag v1.0.0
Push tag:
git push origin v1.0.0
Melihat daftar tag:
git tag
Membuat annotated tag:
git tag -a v1.0.0 -m "Release versi 1.0.0"
Push semua tag:
git push origin --tags
34. Contoh Workflow Harian Developer
Mulai Kerja
git checkout main
git pull origin main
git checkout -b feature/nama-fitur
Setelah Coding
git status
git add .
git commit -m "Add fitur nama fitur"
git push -u origin feature/nama-fitur
Jika Ada Update dari Main
git checkout main
git pull origin main
git checkout feature/nama-fitur
git merge main
Setelah Merge Request Disetujui
git checkout main
git pull origin main
git branch -d feature/nama-fitur
Jika branch remote juga ingin dihapus:
git push origin --delete feature/nama-fitur
35. Contoh Workflow Fix Bug
git checkout main
git pull origin main
git checkout -b bugfix/fix-login-error
Edit kode, lalu:
git add .
git commit -m "Fix login error when password is empty"
git push -u origin bugfix/fix-login-error
Buat Pull Request / Merge Request.
36. Contoh Workflow Hotfix Production
Hotfix biasanya untuk bug urgent di production.
git checkout main
git pull origin main
git checkout -b hotfix/fix-production-error
Edit kode, lalu:
git add .
git commit -m "Fix production error on ticket API"
git push -u origin hotfix/fix-production-error
Setelah itu buat Pull Request / Merge Request dengan prioritas tinggi.
37. Best Practice Git
1. Selalu Pull Sebelum Mulai Kerja
git checkout main
git pull origin main
2. Jangan Langsung Kerja di Main
Gunakan branch:
git checkout -b feature/nama-fitur
3. Commit Kecil tapi Jelas
Lebih baik beberapa commit kecil daripada satu commit besar yang isinya campur-campur.
Contoh baik:
git commit -m "Add validation for login form"
git commit -m "Add unit test for login service"
git commit -m "Update login error message"
4. Jangan Commit File Rahasia
Jangan commit file seperti:
.env
application-prod.properties
private-key.pem
password.txt
Gunakan .gitignore.
5. Gunakan Pesan Commit yang Jelas
Format sederhana:
Jenis perubahan + apa yang diubah
Contoh:
git commit -m "Add ticket classification endpoint"
git commit -m "Fix null pointer on SOP response"
git commit -m "Update README installation guide"
38. Command Git yang Paling Sering Dipakai
| Command | Fungsi |
|---|---|
git clone URL | Clone repository |
git status | Cek status perubahan |
git add . | Masukkan semua perubahan ke staging |
git commit -m "pesan" | Simpan perubahan |
git push | Kirim perubahan ke remote |
git pull | Ambil update terbaru |
git branch | Lihat branch |
git checkout -b nama-branch | Buat dan pindah branch |
git checkout nama-branch | Pindah branch |
git merge nama-branch | Gabungkan branch |
git log --oneline | Lihat riwayat commit |
git stash | Simpan perubahan sementara |
git stash pop | Ambil kembali stash |
git remote -v | Lihat remote repository |
git fetch | Ambil data remote tanpa merge |
git reset | Mengubah posisi commit lokal |
git revert | Membatalkan commit dengan commit baru |
39. Contoh Kasus Lengkap
Kasus
Anda baru join project dan diminta mengerjakan fitur login.
Langkah 1: Clone Project
git clone https://github.com/company/project.git
cd project
Langkah 2: Cek Branch
git branch
Langkah 3: Ambil Update Terbaru
git checkout main
git pull origin main
Langkah 4: Buat Branch Fitur
git checkout -b feature/login
Langkah 5: Coding
Edit file sesuai kebutuhan.
Langkah 6: Cek Status
git status
Langkah 7: Tambahkan Perubahan
git add .
Langkah 8: Commit
git commit -m "Add login feature"
Langkah 9: Push Branch
git push -u origin feature/login
Langkah 10: Buat Pull Request / Merge Request
Buka GitHub/GitLab, lalu buat PR/MR dari:
feature/login -> main
Langkah 11: Setelah PR/MR Di-merge
Update branch main lokal:
git checkout main
git pull origin main
Hapus branch lokal:
git branch -d feature/login
40. Masalah yang Sering Terjadi
1. Error: Your branch is behind
Artinya branch lokal tertinggal dari remote.
Solusi:
git pull origin nama-branch
2. Error: Conflict
Solusi:
git status
# edit file yang conflict
git add .
git commit -m "Resolve conflict"
3. Salah Commit di Branch Main
Jika belum dipush:
git reset --soft HEAD~1
git checkout -b feature/nama-fitur
git commit -m "Pesan commit"
Jika sudah dipush, jangan reset sembarangan. Gunakan revert:
git revert commit_id
git push
4. Lupa Pull Sebelum Push
Jika push ditolak:
git pull origin nama-branch
Jika ada conflict, selesaikan dulu, lalu:
git add .
git commit -m "Resolve conflict"
git push
41. Ringkasan Workflow Aman
Workflow aman untuk development tim:
git checkout main
git pull origin main
git checkout -b feature/nama-fitur
# coding
git status
git add .
git commit -m "Add nama fitur"
git push -u origin feature/nama-fitur
Jika branch utama berubah:
git checkout main
git pull origin main
git checkout feature/nama-fitur
git merge main
Setelah selesai, buat Pull Request / Merge Request.
42. Cheat Sheet Git
# Clone repo
git clone URL
# Cek status
git status
# Tambah semua file
git add .
# Commit
git commit -m "pesan commit"
# Push
git push origin nama-branch
# Pull
git pull origin nama-branch
# Buat branch baru
git checkout -b nama-branch
# Pindah branch
git checkout nama-branch
# Lihat branch
git branch
# Merge branch
git merge nama-branch
# Simpan perubahan sementara
git stash
# Ambil stash
git stash pop
# Lihat log
git log --oneline
# Lihat remote
git remote -v
# Hapus branch lokal
git branch -d nama-branch
# Hapus branch remote
git push origin --delete nama-branch
43. Rekomendasi Standar Tim Development
Untuk kerja tim, gunakan aturan sederhana berikut:
- Branch utama adalah
main - Developer tidak boleh langsung push ke
main - Semua pekerjaan harus melalui branch
- Semua perubahan masuk melalui Pull Request / Merge Request
- Minimal satu orang review sebelum merge
- Branch harus selalu update dari
main - Jangan commit file rahasia
- Gunakan
.gitignore - Pesan commit harus jelas
- Setelah branch selesai, hapus branch lokal dan remote
44. Contoh Struktur Branch Tim
main
├── feature/login
├── feature/ticket-api
├── bugfix/fix-null-pointer
├── hotfix/fix-prod-error
└── release/v1.0.0
45. Penutup
Git adalah tools wajib dalam development modern. Command yang paling sering digunakan sehari-hari adalah:
git clone
git pull
git checkout -b
git status
git add
git commit
git push
git merge
Jika sudah memahami command tersebut, maka sudah cukup untuk mengikuti workflow development tim secara umum.
Untuk level berikutnya, pelajari:
- Pull Request / Merge Request
- Conflict resolution
- Rebase
- Cherry-pick
- Git Flow
- Conventional Commit
- CI/CD pipeline
Published by Nirantara
Nirantara is an Indonesian Enterprise AI company specializing in Enterprise AI, RAG, Intelligent Search, and AI Automation. Article written by jsturana.