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