Praktik pertama di Git: git init, status file (untracked, tracked, staged), git add dan mode patch interaktif, hingga menyusun .gitignore serta file penanda .gitkeep.

Di episode 2 kalian memahami arsitektur tiga area: working directory, staging area, dan repository. Sekarang saatnya menerapkan teori itu: menciptakan repository pertama, membaca status file, dan memahami bagaimana sebuah file "dikenal" oleh Git.
Sepanjang episode ini kalian akan mendengar empat kata yang selalu muncul di dunia Git: untracked, tracked, modified, dan staged. Empat status ini adalah bahasa percakapan sehari-hari Git — kuasai, dan semua episode berikutnya akan terasa jauh lebih mudah.
Buat folder proyek, masuk ke dalamnya, lalu jalankan git init:
mkdir latihan-git
cd latihan-git
git initOutput akan menampilkan pesan seperti Initialized empty Git repository in .../.git/. Saat itu juga, Git membuat folder tersembunyi .git di dalam proyek — inilah repository itu sendiri: database objek, config, dan seluruh riwayat commit.
Warning
Folder .git adalah jantung repository. Jangan pernah menghapusnya — repository kalian lenyap. Biasakan memeriksa lokasi kerja dengan pwd sebelum menjalankan git init agar tidak membuat repository di tempat yang salah.
Di dalam .git terdapat beberapa komponen penting:
| Komponen | Fungsi |
|---|---|
objects/ | Database objek Git (blob, tree, commit) |
refs/ | Pointer branch dan tag |
HEAD | Pointer ke branch yang aktif saat ini |
config | Konfigurasi repository (lokal) |
index | Staging area (file yang sudah di-add) |
git status adalah perintah paling sering dipakai di Git. Ia menampilkan kondisi seluruh file dalam tiga area.
git status
On branch main
No commits yet
nothing to commit (create/copy files and use "git add" to track)Sekarang buat beberapa file dan lihat bagaimana statusnya berubah:
echo "<h1>Halo Dunia</h1>" > index.html
mkdir docs && echo "catatan" > docs/README.mdStatus file terbagi dalam empat kategori:
??) — file baru yang belum pernah dikenali Git. M) — file ter-tracking yang isinya berubah di working directory.A ) — perubahan sudah masuk staging area, siap di-commit.git add <file> dan git add .Untuk memberitahu Git bahwa sebuah file harus dilacak, gunakan git add:
git add index.html
git add docs/README.md
git add .git add <file> — menandai satu file spesifik.git add . — menandai semua perubahan di folder aktif sekaligus.Setelah git add, file berpindah dari untracked menjadi staged: Git merekam isi file ke staging area dan menjamin versi itulah yang akan di-commit.
Tip
Tim profesional lebih sering memakai git add <file> yang spesifik daripada git add . yang borongan, terutama untuk perubahan besar. Dengan begitu kalian sadar betul apa saja yang akan masuk ke commit berikutnya.
Kadang kalian ingin menandai hanya sebagian baris dari satu file — misalnya memisahkan perbaikan bug dari penambahan fitur. Mode patch interaktif menjawab kebutuhan ini:
git add -p src/utils.js
Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? y
Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? nMode ini menampilkan perubahan per "hunk" (potongan) dan menanyakan satu per satu: y untuk menyetujui, n untuk menolak, e untuk mengedit hunk secara manual. Ini senjata utama untuk menjaga commit tetap kecil dan fokus.
Tidak semua file seharusnya masuk Git — dependency (node_modules), artefak build, dan file environment. File .gitignore di akar proyek memberitahu Git: jangan pernah tampilkan atau lacak pola ini.
node_modules/
dist/
*.log
.env
!.env.examplenode_modules/ — abaikan folder (dengan slash di akhir).*.log — wildcard: abaikan semua file berakhiran .log..env — abaikan file rahasia.!.env.example — negasi: kecualikan kembali .env.example dari aturan ignore.# adalah komentar — beri keterangan singkat untuk setiap blok.Pola yang berlaku di semua proyek (misalnya file .DS_Store di macOS) bisa dipasang sekali secara global:
git config --global core.excludesFile ~/.gitignore_global
echo ".DS_Store" >> ~/.gitignore_globalGitHub juga menyediakan template .gitignore resmi untuk hampir semua bahasa dan framework — ambil sebagai titik awal saat membuat proyek baru.
Git tidak melacak folder kosong — hanya file. Untuk mempertahankan struktur folder kosong (misal images/ atau uploads/) di repository, taruh file kosong bernama .gitkeep di dalamnya. File ini hanyalah penanda konvensional, tanpa fungsi khusus di mata Git.
Rekap episode 3:
git init menciptakan repository dan folder .git berisi database objek dan config.git status membedakan empat status: untracked, tracked, modified, staged.git add <file> / git add . memindahkan perubahan ke staging area; git add -p menyeleksi per baris..gitignore menjaga repository tetap bersih dari dependency, artefak, dan rahasia..gitkeep mempertahankan folder kosong agar tetap masuk Git.Di episode 4 kita membuat commit pertama: menyimpan snapshot secara permanen dengan git commit, menulis pesan commit profesional dengan Conventional Commits, membaca riwayat dengan git log, dan memperbaiki commit terakhir dengan --amend. Persiapan yang kalian lakukan di sini adalah bahan bakarnya. Sampai jumpa!