gitstashMenengah3 mnt baca

Git Stash: Simpan Kerjaan Setengah Jalan

Cara menyimpan perubahan sementara tanpa commit, pindah branch dengan tenang, lalu mengambilnya kembali.

Masalah yang diselesaikan stash

Kamu sedang mengerjakan fitur di branch fitur-a, kodenya setengah jadi dan belum layak di-commit. Tiba-tiba ada bug urgent yang harus diperbaiki di main sekarang. Kamu tidak bisa pindah branch karena Git menolak (perubahanmu akan tertimpa), tapi kamu juga tidak mau commit setengah jadi yang merusak riwayat.

Solusinya: git stash. Perintah ini menyimpan perubahanmu sementara ke "laci", mengembalikan working directory ke kondisi bersih, dan membiarkanmu pindah branch dengan tenang. Nanti, ambil lagi dari laci dan lanjutkan kerja.

Menyimpan dan mengambil stash

bash
# simpan semua perubahan yang belum di-commit
git stash
bash
Saved working directory and index state WIP on main: 3f2a1b9 Tambah halaman tentang

Sekarang git status bersih. Kerjakan bug-nya, commit, lalu kembali dan ambil stash:

bash
# kembali ke branch semula
git switch fitur-a

# ambil stash terakhir dan terapkan kembali
git stash pop
bash
On branch fitur-a
Changes not staged for commit:
        modified:   dashboard.html
Dropped refs/stash@{0} (abc1234)

Perubahanmu kembali persis seperti sebelum di-stash, dan entri stash-nya otomatis terhapus (itulah beda pop dengan apply).

Memberi nama pada stash

Kalau kamu menyimpan beberapa stash, beri nama supaya tidak bingung:

bash
git stash push -m "setengah jalan: validasi form checkout"
bash
git stash list
bash
stash@{0}: On fitur-a: setengah jalan: validasi form checkout
stash@{1}: WIP on main: 3f2a1b9 Tambah halaman tentang

Mengambil stash tertentu (bukan yang terakhir):

bash
git stash apply stash@{1}

apply menerapkan tanpa menghapus entrinya, pop menerapkan sekaligus menghapus. Pakai apply kalau kamu masih ragu dan ingin menyimpan cadangan.

Kapan stash dipakai?

  • Pindah branch mendadak padahal kerjaan belum selesai (kasus di atas, paling umum).
  • Pull tapi ada perubahan lokal yang menghalangi: stash dulu, pull, lalu pop kembali.
  • Coba sesuatu dengan cepat di kondisi bersih tanpa commit: stash, eksperimen, kalau gagal tinggal drop.
bash
# buang satu stash yang tidak jadi dipakai
git stash drop stash@{0}

# buang SEMUA stash (hati-hati)
git stash clear

Batasan stash

Secara default, git stash tidak menyimpan file yang belum pernah dilacak (untracked, file baru). Kalau kerjaan setengah jalanmu termasuk file baru, tambahkan flag -u:

bash
# sertakan file untracked
git stash -u

Tanpa -u, file barumu tertinggal di working directory saat kamu pindah branch, yang bisa bikin bingung atau malah ke-commit di branch yang salah.

Catatan teknis: Stash sebenarnya disimpan sebagai commit khusus di dalam database Git (bisa dilihat dengan git stash list dan bahkan git log --all). Artinya stash tidak akan hilang hanya karena kamu pindah branch. Tapi stash juga bukan pengganti commit: ia tidak punya pesan yang jelas secara default dan mudah terlupakan. Jangan menumpuk belasan stash tanpa nama, perlakukan stash sebagai tempat transit sementara, bukan gudang permanen.

Ringkasan

git stash untuk jeda darurat, git stash pop untuk lanjutkan. Beri nama dengan -m kalau menyimpan lebih dari satu, dan ingat flag -u untuk file baru. Stash menyelamatkanmu dari commit setengah jadi yang mengotori riwayat.