Git

Perintah Git yang paling sering dibutuhkan, dengan penekanan pada operasi yang mudah lupa: membatalkan perubahan, memperbaiki commit, dan menelusuri riwayat.

00

Konfigurasi dan Memulai

Pengaturan awal identitas dan inisialisasi repositori.

Identitas dan preferensi dasar

git
git config --global user.name "Nama Anda"
git config --global user.email "anda@contoh.com"
git config --global init.defaultBranch main
git config --global pull.rebase true   # pull dengan rebase, riwayat lebih bersih
git config --list

Membuat atau menyalin repositori

git
git init                         # inisialisasi repo baru
git clone <url>                  # salin repo remote
git clone --depth 1 <url>        # salin dangkal (riwayat terbaru saja)
01

Perubahan Harian

Siklus inti: memeriksa status, men-stage, dan meng-commit.

Status, stage, commit

git
git status -sb                   # ringkas + info branch
git add file.ts                  # stage satu file
git add -p                       # stage per potongan (interaktif)
git add -A                       # stage semua perubahan
git commit -m "feat: pesan singkat"
git commit --amend               # ubah commit terakhir (sebelum push)

Melihat perbedaan

git
git diff                         # perubahan belum di-stage
git diff --staged                # perubahan yang sudah di-stage
git diff main..fitur             # antar branch
git diff --stat                  # ringkasan per file
02

Branch dan Merge

Mengelola branch

git
git branch                       # daftar branch lokal
git switch -c fitur/login        # buat dan pindah ke branch baru
git switch main                  # pindah branch
git branch -d fitur/login        # hapus branch yang sudah di-merge
git branch -D fitur/login        # paksa hapus

Menggabungkan perubahan

git
git merge fitur/login            # gabungkan ke branch saat ini
git merge --no-ff fitur/login    # selalu buat commit merge
git rebase main                  # tata ulang commit di atas main
git rebase -i HEAD~3             # rebase interaktif 3 commit terakhir
03

Remote dan Sinkronisasi

Mengambil dan mengirim

git
git remote -v                    # daftar remote
git fetch origin                 # ambil tanpa merge
git pull                         # ambil dan gabungkan
git push                         # kirim ke remote
git push -u origin fitur/login   # set upstream saat push pertama

Push paksa yang lebih aman

git
git push --force-with-lease
04

Membatalkan dan Memperbaiki

Bagian yang paling sering dicari ulang. Pahami perbedaan reset, revert, dan restore.

Mengurungkan perubahan

git
git restore file.ts              # buang perubahan kerja pada file
git restore --staged file.ts     # batalkan stage, pertahankan perubahan
git reset --soft HEAD~1          # batalkan commit, pertahankan stage
git reset --mixed HEAD~1         # batalkan commit dan stage
git reset --hard HEAD~1          # buang commit dan semua perubahan
git revert <hash>                # batalkan commit via commit baru (aman)

Menyelamatkan pekerjaan yang hilang

git
git reflog                       # riwayat seluruh perpindahan HEAD
git reset --hard <hash-reflog>   # kembalikan ke kondisi sebelumnya
git cherry-pick <hash>           # ambil satu commit dari tempat lain
05

Riwayat dan Inspeksi

Menelusuri riwayat

git
git log --oneline --graph --all  # grafik ringkas semua branch
git log -p file.ts               # riwayat beserta diff sebuah file
git log --author="nama"          # filter berdasar pembuat
git blame file.ts                # siapa mengubah baris apa
git show <hash>                  # detail satu commit

Mencari penyebab regresi

git
git bisect start
git bisect bad                   # commit sekarang bermasalah
git bisect good <hash-lama>      # commit lama masih baik
# Git akan checkout commit di tengah; uji lalu tandai good/bad
git bisect reset                 # selesai
06

Stash dan Penyimpanan Sementara

Menyimpan pekerjaan sementara

git
git stash                        # simpan perubahan, bersihkan working tree
git stash -u                     # sertakan file untracked
git stash list                   # daftar stash
git stash pop                    # terapkan dan hapus stash teratas
git stash apply stash@{1}        # terapkan stash tertentu tanpa menghapus
git stash drop stash@{0}         # hapus stash tertentu