> ## Documentation Index
> Fetch the complete documentation index at: https://docs.skanesgalab.my.id/llms.txt
> Use this file to discover all available pages before exploring further.

# Dasar-Dasar Git

> Panduan perintah dasar Git: git init, clone, status, add, commit, branch, checkout, merge, push, dan pull.

## 3 Zona Kerja dalam Git (The Three Trees)

Sebelum mengeksekusi perintah Git, kamu perlu memahami bagaimana Git mengelola perubahan berkas:

```mermaid theme={null}
flowchart LR
    WD["Working Directory (File yang diedit)"] -->|git add| SA["Staging Area (Persiapan Commit)"]
    SA -->|git commit| LR["Local Repository (Tersimpan Permanen)"]
    LR -->|git push| RR["Remote Repository (GitHub/GitLab)"]
    RR -->|git pull| WD
```

1. **Working Directory:** Folder tempat kamu membuat, mengedit, atau menghapus file kode.
2. **Staging Area (Index):** Area transit untuk memilih perubahan file mana saja yang siap disimpan.
3. **Local Repository (.git):** Basis data lokal di komputermu yang menyimpan riwayat commit secara permanen.
4. **Remote Repository:** Server penyimpanan online seperti GitHub.

***

## 1. Memulai Repositori (`init` & `clone`)

### Menginisialisasi Proyek Baru (`git init`)

Jika kamu punya folder proyek baru di komputer dan ingin mulai menggunakan Git:

```bash theme={null}
cd /path/ke/proyekmu
git init
```

Perintah ini akan membuat folder tersembunyi `.git` yang menjadi basis data riwayat proyek.

### Mengunduh Proyek dari GitHub (`git clone`)

Jika proyek sudah ada di GitHub dan ingin kamu salin ke komputermu:

```bash theme={null}
git clone git@github.com:username/nama-repo.git
cd nama-repo
```

***

## 2. Memeriksa & Menyiapkan Perubahan (`status` & `add`)

### Memeriksa Status (`git status`)

Melihat file apa saja yang baru dibuat (*untracked*), dimodifikasi (*modified*), atau sudah masuk antrean staging:

```bash theme={null}
git status
```

### Menambahkan File ke Staging Area (`git add`)

```bash theme={null}
# Menambahkan satu file tertentu
git add index.html

# Menambahkan semua perubahan file sekaligus di direktori saat ini
git add .
```

***

## 3. Menyimpan Riwayat (`git commit`)

Commit adalah "titik penyimpanan" (*checkpoint*) dari proyekmu. Setiap commit wajib memiliki pesan (*message*) yang menjelaskan apa yang diubah.

```bash theme={null}
# Melakukan commit dengan pesan penjelasan
git commit -m "feat: membuat halaman login dan autentikasi user"

# Melakukan add sekaligus commit untuk file yang sudah pernah di-track
git commit -am "fix: memperbaiki bug validasi email"
```

***

## 4. Percabangan (`git branch` & `checkout` / `switch`)

Branch (cabang) memungkinkan kamu mengerjakan fitur baru atau perbaikan bug secara terisolasi tanpa merusak cabang utama (`main`).

```bash theme={null}
# Melihat daftar branch yang ada (tanda * menandakan branch aktif)
git branch

# Membuat branch baru
git branch fitur-pembayaran

# Berpindah ke branch lain
git checkout fitur-pembayaran
# Atau sintaks modern yang direkomendasikan:
git switch fitur-pembayaran

# Membuat branch baru dan langsung berpindah ke dalamnya
git checkout -b fitur-keranjang
# Atau sintaks modern:
git switch -c fitur-keranjang

# Menghapus branch lokal yang sudah tidak terpakai
git branch -d fitur-lama
```

***

## 5. Menggabungkan Cabang (`git merge`)

Setelah fitur di dalam branch selesai dibuat dan diuji, saatnya menggabungkan perubahannya kembali ke branch utama (`main`):

```bash theme={null}
# 1. Pindah ke branch tujuan (misal main)
git switch main

# 2. Gabungkan perubahan dari branch fitur
git merge fitur-keranjang
```

***

## 6. Sinkronisasi dengan Remote GitHub (`push` & `pull`)

### Menghubungkan Repositori Lokal ke GitHub (`git remote`)

Jika kamu membuat repositori baru secara lokal dan ingin menghubungkannya ke repositori kosong di GitHub:

```bash theme={null}
# Tambahkan alamat remote dengan alias 'origin'
git remote add origin git@github.com:usernamekamu/nama-repo.git

# Memeriksa daftar remote url
git remote -v
```

### Mengirim Perubahan ke GitHub (`git push`)

```bash theme={null}
# Push pertama kali sekaligus mengatur tracking upstream (-u)
git push -u origin main

# Push selanjutnya cukup mengetikkan:
git push
```

### Mengambil Perubahan Terbaru dari GitHub (`git pull`)

Jika rekan kerjamu mengunggah kode baru ke GitHub, perbarui proyek lokalmu dengan:

```bash theme={null}
git pull origin main
# Atau cukup:
git pull
```

*`git pull` sebenarnya adalah kombinasi dari `git fetch` (mengambil metadata data terbaru) lalu otomatis melakukan `git merge` ke branch lokalmu.*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.