Kembali ke Beranda
DevOps

Tutorial Git Dasar

Tutorial dasar penggunaan Git untuk development, mulai dari clone repository, konfigurasi awal, membuat branch, commit, push, pull, merge, menangani conflict, stash, reset, revert, hingga workflow kerja tim menggunakan Pull Request atau Merge Request.

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

IstilahPenjelasan
Repository / RepoFolder project yang dikelola oleh Git
CommitCatatan perubahan kode
BranchJalur pengembangan terpisah
MergeMenggabungkan branch
CloneMengambil repository dari remote ke lokal
PullMengambil perubahan terbaru dari remote
PushMengirim perubahan lokal ke remote
RemoteRepository yang ada di server, misalnya GitHub/GitLab
OriginNama default remote repository
Main / MasterBranch utama project
Staging AreaArea sementara sebelum commit

---

3. Install Git

Linux

BASH
sudo apt update
sudo apt install git

Untuk Fedora/AlmaLinux/RHEL:

BASH
sudo dnf install git

Windows

Download Git dari:

TEXT
https://git-scm.com/download/win

Setelah install, gunakan Git Bash atau terminal biasa.

MacOS

BASH
brew install git

Cek versi Git:

BASH
git --version

---

4. Konfigurasi Awal Git

Setelah Git terinstall, set nama dan email:

BASH
git config --global user.name "Nama Anda"
git config --global user.email "email@anda.com"

Cek konfigurasi:

BASH
git config --list

Contoh:

BASH
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:

BASH
git clone https://github.com/user/nama-project.git

Masuk ke folder project:

BASH
cd nama-project

Cek status repository:

BASH
git status

---

6. Melihat Remote Repository

Untuk melihat repository remote:

BASH
git remote -v

Output contoh:

BASH
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:

BASH
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:

BASH
git status

Contoh output:

BASH
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:

BASH
git add .

Menambahkan file tertentu saja:

BASH
git add src/App.java

Menambahkan beberapa file:

BASH
git add file1.java file2.java

---

10. Membuat Commit

Commit digunakan untuk menyimpan snapshot perubahan.

BASH
git commit -m "Menambahkan fitur login"

Contoh pesan commit yang baik:

BASH
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:

BASH
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.

BASH
git push origin nama-branch

Contoh:

BASH
git push origin feature/login

Jika sedang di branch yang sama dan upstream sudah terset:

BASH
git push

Push pertama kali untuk branch baru:

BASH
git push -u origin feature/login

Setelah itu cukup:

BASH
git push

---

12. Pull dari Remote Repository

Pull digunakan untuk mengambil update terbaru dari remote.

BASH
git pull

Atau lebih spesifik:

BASH
git pull origin main

Contoh sebelum mulai kerja:

BASH
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:

BASH
git branch

Melihat semua branch termasuk remote:

BASH
git branch -a

Membuat branch baru:

BASH
git branch feature/login

Pindah ke branch:

BASH
git checkout feature/login

Membuat sekaligus pindah ke branch baru:

BASH
git checkout -b feature/login

Alternatif modern:

BASH
git switch -c feature/login

Pindah branch:

BASH
git switch main

---

14. Contoh Penamaan Branch

Beberapa pola nama branch yang umum:

BASH
feature/login
feature/ticket-classification
bugfix/fix-error-login
hotfix/security-patch
release/v1.0.0
chore/update-dependency

Penjelasan:

PrefixFungsi
featureUntuk fitur baru
bugfixUntuk perbaikan bug biasa
hotfixUntuk perbaikan urgent di production
releaseUntuk persiapan rilis
choreUntuk 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:

BASH
git checkout main

Ambil update terbaru:

BASH
git pull origin main

Merge branch fitur:

BASH
git merge feature/login

Push hasil merge:

BASH
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:

BASH
feature/login

Ambil update dari main:

BASH
git checkout main
git pull origin main

Balik ke branch fitur:

BASH
git checkout feature/login

Merge main ke branch fitur:

BASH
git merge main

Jika tidak ada conflict, lanjut kerja seperti biasa.

---

17. Conflict

Conflict terjadi ketika Git tidak bisa otomatis menggabungkan perubahan.

Contoh:

BASH
CONFLICT (content): Merge conflict in src/App.java

Cek file conflict:

BASH
git status

Di dalam file biasanya ada tanda seperti ini:

TEXT
<<<<<<< HEAD
kode versi branch saat ini
=======
kode versi branch yang digabung
>>>>>>> main

Pilih kode yang benar, lalu hapus tanda conflict tersebut.

Setelah selesai:

BASH
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

BASH
git checkout -- nama-file

Contoh:

BASH
git checkout -- src/App.java

Atau versi modern:

BASH
git restore src/App.java

Membatalkan semua perubahan lokal yang belum di-add

BASH
git restore .

Mengeluarkan file dari staging area

Jika sudah terlanjur git add, gunakan:

BASH
git restore --staged nama-file

Atau semua file:

BASH
git restore --staged .

---

19. Melihat Riwayat Commit

Melihat log commit:

BASH
git log

Versi ringkas:

BASH
git log --oneline

Contoh output:

BASH
a1b2c3d Add login API
e4f5g6h Fix validation error
i7j8k9l Initial commit

Log dengan grafik branch:

BASH
git log --oneline --graph --all

---

20. Melihat Perubahan File

Melihat perubahan yang belum di-add:

BASH
git diff

Melihat perubahan yang sudah di-add:

BASH
git diff --staged

---

21. Membuat Repository Baru dari Folder Lokal

Masuk ke folder project:

BASH
cd nama-project

Inisialisasi Git:

BASH
git init

Tambahkan file:

BASH
git add .

Commit pertama:

BASH
git commit -m "Initial commit"

Tambahkan remote:

BASH
git remote add origin https://github.com/user/nama-project.git

Push ke remote:

BASH
git branch -M main
git push -u origin main

---

22. Menghapus Branch

Menghapus branch lokal:

BASH
git branch -d nama-branch

Jika branch belum di-merge dan tetap ingin dihapus:

BASH
git branch -D nama-branch

Menghapus branch remote:

BASH
git push origin --delete nama-branch

Contoh:

BASH
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:

BASH
git stash

Lihat daftar stash:

BASH
git stash list

Ambil kembali perubahan terakhir:

BASH
git stash pop

Ambil stash tanpa menghapus dari daftar stash:

BASH
git stash apply

Hapus semua stash:

BASH
git stash clear

Contoh workflow:

BASH
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:

BASH
git checkout feature/login
git fetch origin
git rebase origin/main

Jika ada conflict:

BASH
# selesaikan conflict di file
git add .
git rebase --continue

Membatalkan rebase:

BASH
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.

BASH
git fetch origin

Setelah fetch, bisa lihat branch remote:

BASH
git branch -a

Perbedaan:

BASH
git fetch

hanya mengambil data.

BASH
git pull

mengambil data lalu langsung merge/rebase ke branch aktif.

Secara sederhana:

BASH
git pull = git fetch + git merge

---

26. Pull Request / Merge Request

Dalam kerja tim, biasanya developer tidak langsung push ke main.

Workflow umum:

  1. Pull branch utama
  2. Buat branch fitur
  3. Coding
  4. Commit
  5. Push branch
  6. Buat Pull Request / Merge Request
  7. Code review
  8. Merge ke branch utama

Contoh:

BASH
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:

GITIGNORE
target/
*.class
*.log
.env
.idea/
.vscode/

Contoh .gitignore untuk Node.js:

GITIGNORE
node_modules/
dist/
.env
npm-debug.log

Contoh .gitignore untuk Python:

GITIGNORE
pycache/
*.pyc
venv/
.env

Jika file sudah terlanjur masuk Git, .gitignore tidak otomatis menghapusnya dari tracking.

Gunakan:

BASH
git rm --cached nama-file

Contoh:

BASH
git rm --cached .env
git commit -m "Remove env file from git tracking"

---

28. Melihat File yang Sedang Dilacak Git

BASH
git ls-files

---

29. Mengganti Nama Branch

Mengganti nama branch lokal:

BASH
git branch -m nama-baru

Contoh saat sedang berada di branch tersebut:

BASH
git branch -m feature/new-login

Jika ingin rename branch lama ke branch baru:

BASH
git branch -m nama-lama nama-baru

Push branch baru:

BASH
git push -u origin nama-baru

Hapus branch lama di remote:

BASH
git push origin --delete nama-lama

---

30. Reset Commit

Soft Reset

Menghapus commit terakhir, tapi perubahan tetap ada di staging area.

BASH
git reset --soft HEAD~1

Mixed Reset

Menghapus commit terakhir, perubahan tetap ada tapi keluar dari staging area.

BASH
git reset --mixed HEAD~1

Atau:

BASH
git reset HEAD~1

Hard Reset

Menghapus commit dan perubahan secara permanen.

BASH
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:

BASH
git log --oneline

Revert:

BASH
git revert commit_id

Contoh:

BASH
git revert a1b2c3d

---

32. Cherry Pick

Cherry-pick digunakan untuk mengambil satu commit tertentu dari branch lain.

BASH
git cherry-pick commit_id

Contoh:

BASH
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:

BASH
git tag v1.0.0

Push tag:

BASH
git push origin v1.0.0

Melihat daftar tag:

BASH
git tag

Membuat annotated tag:

BASH
git tag -a v1.0.0 -m "Release versi 1.0.0"

Push semua tag:

BASH
git push origin --tags

---

34. Contoh Workflow Harian Developer

Mulai Kerja

BASH
git checkout main
git pull origin main
git checkout -b feature/nama-fitur

Setelah Coding

BASH
git status
git add .
git commit -m "Add fitur nama fitur"
git push -u origin feature/nama-fitur

Jika Ada Update dari Main

BASH
git checkout main
git pull origin main
git checkout feature/nama-fitur
git merge main

Setelah Merge Request Disetujui

BASH
git checkout main
git pull origin main
git branch -d feature/nama-fitur

Jika branch remote juga ingin dihapus:

BASH
git push origin --delete feature/nama-fitur

---

35. Contoh Workflow Fix Bug

BASH
git checkout main
git pull origin main
git checkout -b bugfix/fix-login-error

Edit kode, lalu:

BASH
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.

BASH
git checkout main
git pull origin main
git checkout -b hotfix/fix-production-error

Edit kode, lalu:

BASH
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

BASH
git checkout main
git pull origin main

2. Jangan Langsung Kerja di Main

Gunakan branch:

BASH
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:

BASH
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:

TEXT
.env
application-prod.properties
private-key.pem
password.txt

Gunakan .gitignore.

5. Gunakan Pesan Commit yang Jelas

Format sederhana:

TEXT
Jenis perubahan + apa yang diubah

Contoh:

BASH
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

CommandFungsi
git clone URLClone repository
git statusCek status perubahan
git add .Masukkan semua perubahan ke staging
git commit -m "pesan"Simpan perubahan
git pushKirim perubahan ke remote
git pullAmbil update terbaru
git branchLihat branch
git checkout -b nama-branchBuat dan pindah branch
git checkout nama-branchPindah branch
git merge nama-branchGabungkan branch
git log --onelineLihat riwayat commit
git stashSimpan perubahan sementara
git stash popAmbil kembali stash
git remote -vLihat remote repository
git fetchAmbil data remote tanpa merge
git resetMengubah posisi commit lokal
git revertMembatalkan commit dengan commit baru

---

39. Contoh Kasus Lengkap

Kasus

Anda baru join project dan diminta mengerjakan fitur login.

Langkah 1: Clone Project

BASH
git clone https://github.com/company/project.git
cd project

Langkah 2: Cek Branch

BASH
git branch

Langkah 3: Ambil Update Terbaru

BASH
git checkout main
git pull origin main

Langkah 4: Buat Branch Fitur

BASH
git checkout -b feature/login

Langkah 5: Coding

Edit file sesuai kebutuhan.

Langkah 6: Cek Status

BASH
git status

Langkah 7: Tambahkan Perubahan

BASH
git add .

Langkah 8: Commit

BASH
git commit -m "Add login feature"

Langkah 9: Push Branch

BASH
git push -u origin feature/login

Langkah 10: Buat Pull Request / Merge Request

Buka GitHub/GitLab, lalu buat PR/MR dari:

TEXT
feature/login -> main

Langkah 11: Setelah PR/MR Di-merge

Update branch main lokal:

BASH
git checkout main
git pull origin main

Hapus branch lokal:

BASH
git branch -d feature/login

---

40. Masalah yang Sering Terjadi

1. Error: Your branch is behind

Artinya branch lokal tertinggal dari remote.

Solusi:

BASH
git pull origin nama-branch

2. Error: Conflict

Solusi:

BASH
git status

edit file yang conflict

git add . git commit -m "Resolve conflict"

3. Salah Commit di Branch Main

Jika belum dipush:

BASH
git reset --soft HEAD~1
git checkout -b feature/nama-fitur
git commit -m "Pesan commit"

Jika sudah dipush, jangan reset sembarangan. Gunakan revert:

BASH
git revert commit_id
git push

4. Lupa Pull Sebelum Push

Jika push ditolak:

BASH
git pull origin nama-branch

Jika ada conflict, selesaikan dulu, lalu:

BASH
git add .
git commit -m "Resolve conflict"
git push

---

41. Ringkasan Workflow Aman

Workflow aman untuk development tim:

BASH
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:

BASH
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

BASH
# 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:

  1. Branch utama adalah main
  2. Developer tidak boleh langsung push ke main
  3. Semua pekerjaan harus melalui branch
  4. Semua perubahan masuk melalui Pull Request / Merge Request
  5. Minimal satu orang review sebelum merge
  6. Branch harus selalu update dari main
  7. Jangan commit file rahasia
  8. Gunakan .gitignore
  9. Pesan commit harus jelas
  10. Setelah branch selesai, hapus branch lokal dan remote

---

44. Contoh Struktur Branch Tim

TEXT
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:

BASH
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
gitgithubgitlabversion controlclonepushpullmergebranchingcommitconflictstashrebaseresetrevertpull requestmerge requestworkflow developmentsource code management