Tiga perintah yang akan kamu gunakan setiap hari saat bekerja dengan Git adalah git init, git add, dan git commit. Ketiganya membentuk siklus kerja paling fundamental di Git. Setelah memahami ketiganya dengan benar, semua konsep Git lainnya akan jauh lebih mudah dipahami.
Tiga Area Git
Sebelum membahas perintahnya, penting untuk memahami tiga area yang ada di Git:
┌─────────────────┐ git add ┌─────────────────┐ git commit ┌─────────────────┐
│ Working │ ──────────→ │ Staging Area │ ───────────→ │ Repository │
│ Directory │ │ (Index) │ │ (.git/) │
│ │ git restore │ │ │ │
│ File yang │ ←────────── │ Perubahan yang │ │ Histori semua │
│ sedang diedit │ │ siap di-commit │ │ commit │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Working Directory: folder proyek yang kamu lihat dan edit sehari-hari
- Staging Area: area “antrian” — kamu memilih perubahan mana yang masuk ke commit berikutnya
- Repository: database Git yang menyimpan semua histori commit secara permanen
git init — Membuat Repository Baru
Perintah ini mengubah folder biasa menjadi Git repository dengan membuat folder tersembunyi .git/ di dalamnya.
# Buat folder baru dan inisialisasi Git
mkdir proyek-pertama
cd proyek-pertama
git init
# Output:
# Initialized empty Git repository in /path/proyek-pertama/.git/
# Atau inisialisasi langsung dengan nama folder
git init nama-proyek
cd nama-proyek
Folder .git/ berisi semua metadata Git: histori commit, konfigurasi lokal, branch info, dan lainnya. Jangan hapus atau edit folder ini secara manual.
# Lihat isi .git/ (opsional, sekadar penasaran)
ls .git/
# config description HEAD hooks/ info/ objects/ refs/
Membuat File Pertama
# Buat file README
echo "# Proyek Pertama" > README.md
echo "Ini adalah proyek Git pertama saya." >> README.md
# Buat file lainnya
mkdir src
echo "console.log('Halo Git!');" > src/index.js
git status — Melihat Kondisi Saat Ini
Sebelum melakukan apa pun, biasakan selalu cek status:
git status
Output:
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
src/
nothing added to commit but untracked files present (use "git add" to track)
Untracked files = file yang belum pernah direkam Git sama sekali. Git tahu file itu ada, tapi belum melacaknya.
git add — Memasukkan ke Staging Area
git add memindahkan perubahan dari Working Directory ke Staging Area.
# Add satu file
git add README.md
# Add beberapa file
git add README.md src/index.js
# Add semua file di folder tertentu
git add src/
# Add SEMUA perubahan di direktori saat ini (hati-hati!)
git add .
# Add secara interaktif — pilih bagian mana dari file yang di-add
git add -p
Cek status setelah add:
git status
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
new file: src/index.js
Changes to be committed = file sudah di Staging Area, siap di-commit.
Membatalkan Staging (Unstage)
# Keluarkan file dari staging (file tidak berubah, hanya keluar dari antrian)
git restore --staged README.md
# Cara lama (masih bekerja)
git reset HEAD README.md
git commit — Menyimpan Snapshot
git commit mengambil semua yang ada di Staging Area dan menyimpannya sebagai commit permanen di repository.
# Commit dengan pesan langsung
git commit -m "feat: tambah README dan file index awal"
# Commit dan buka editor untuk menulis pesan yang lebih panjang
git commit
# Shortcut: add semua file yang sudah di-track sekaligus commit
# (tidak termasuk file untracked baru)
git commit -am "fix: perbaiki typo di README"
Output setelah commit:
[main (root-commit) a1b2c3d] feat: tambah README dan file index awal
2 files changed, 3 insertions(+)
create mode 100644 README.md
create mode 100644 src/index.js
Menulis Pesan Commit yang Baik
Pesan commit yang baik sangat penting untuk kolaborasi tim dan keterbacaan histori.
Format Conventional Commits
Format yang paling populer di industri:
<type>(<scope>): <deskripsi singkat>
<body opsional — penjelasan lebih detail>
<footer opsional — referensi issue, breaking changes>
Type yang umum:
feat— fitur barufix— perbaikan bugdocs— perubahan dokumentasistyle— formatting, tidak ada perubahan logikarefactor— refactoring kodetest— menambah atau memperbaiki testchore— pemeliharaan, update dependency
# Contoh pesan commit yang baik
git commit -m "feat(auth): tambah fitur login dengan Google OAuth"
git commit -m "fix(api): perbaiki error 500 saat email duplikat"
git commit -m "docs: update README dengan instruksi instalasi Docker"
git commit -m "refactor: pisahkan logika validasi ke helper terpisah"
Aturan Dasar Pesan Commit
- Baris pertama maksimal 50 karakter
- Gunakan imperatif — “tambah fitur” bukan “menambahkan fitur” atau “ditambahkan fitur”
- Jangan diakhiri titik
- Jika perlu penjelasan lebih, pisahkan dengan baris kosong
Melihat Histori Commit
# Log lengkap
git log
# Log ringkas satu baris per commit
git log --oneline
# Log dengan graph branch
git log --oneline --graph --decorate --all
# Log N commit terakhir
git log -5
# Log dengan perubahan file
git log --stat
# Cari commit berdasarkan pesan
git log --grep="feat"
# Cari commit berdasarkan penulis
git log --author="Miftakhuddin"
Workflow Lengkap
# 1. Buat/edit file
echo "# Fitur Baru" > fitur.md
# 2. Cek apa yang berubah
git status
git diff # lihat perubahan detail di working directory
# 3. Stage perubahan
git add fitur.md
# 4. Cek yang sudah di-stage
git diff --staged # lihat perubahan yang ada di staging
# 5. Commit
git commit -m "docs: tambah dokumentasi fitur baru"
# 6. Verifikasi
git log --oneline
Kesimpulan
Siklus edit → git add → git commit adalah inti dari semua workflow Git. Staging Area adalah fitur powerful yang membedakan Git dari VCS lain — kamu bisa memilih dengan presisi perubahan mana yang masuk ke setiap commit, menghasilkan histori yang bersih dan mudah dibaca.
Di artikel berikutnya, kita bahas git log dan git diff secara mendalam — cara membaca histori dan melihat perubahan dengan detail.
Kiki/🎮🍉⌨️🍩💻