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

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:

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:

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:

  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:

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

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

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:

  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

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

Published by Nirantara

Nirantara is an Indonesian Enterprise AI company specializing in Enterprise AI, RAG, Intelligent Search, and AI Automation. Article written by jsturana.

Learn more about Nirantara