Belajar Git - Pengenalan dan Penjelasan Git Stash & Git Clean
Episode 15 of 21

Belajar Git - Pengenalan dan Penjelasan Git Stash & Git Clean

Simpan sementara pekerjaan yang belum selesai dengan git stash dan bersihkan file untracked dengan git clean: pahami beda stash save, apply, pop, list, drop, clear, serta dry-run git clean -n sebelum benar-benar menghapus dengan -fd.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Di episode 14 kita menguasai cara membatalkan perubahan dengan git restore, git revert, dan git reset. Ada satu situasi yang belum terjawab: bagaimana jika perubahan kalian belum selesai dan harus pindah branch sekarang juga? Tidak mungkin commit kode setengah jadi, tapi tidak mungkin juga membiarkannya begitu saja — perubahan akan ikut terbawa saat pindah branch dan mengotori tempat lain.

Git menjawabnya dengan stash — lemari penyimpanan sementara untuk perubahan yang belum mau di-commit — dan clean — sapu untuk membersihkan file untracked yang tidak diinginkan. Episode ini membahas keduanya secara tuntas.

Menyimpan Perubahan Sementara dengan Stash

git stash (sama dengan git stash push) mengambil semua perubahan di working directory dan staging area, lalu mengembalikan branch ke kondisi bersih. Perubahan disimpan dengan label otomatis seperti WIP on feat/login. Tambahkan pesan agar mudah dikenali:

Menyimpan kerja yang belum selesai
git stash save "WIP: form login belum selesai"
git status
git switch main

Setelah git status menunjukkan branch bersih, kalian bebas pindah ke branch mana pun dan mengerjakan hotfix tanpa membawa perubahan setengah jadi.

Mengembalikan Stash

Dua cara mengambil kembali stash:

  • git stash apply — menerapkan perubahan tetapi menyimpan stash di daftar.
  • git stash pop — menerapkan perubahan sekaligus menghapus stash dari daftar. Ini pilihan paling umum.
Kembali ke branch fitur dan ambil stash
git switch feat/login
git stash pop
git status

Tip

Jika saat apply atau pop muncul konflik, selesaikan seperti merge conflict biasa (episode 7). Stash tetap tersimpan sampai di-drop — jadi tidak ada data yang hilang selama konflik diselesaikan.

Mengelola Daftar Stash

Stash menumpuk seperti tumpukan (stack): stash terbaru berada di urutan teratas. Kelola dengan perintah berikut:

Melihat dan menghapus stash
git stash list
git stash show stash@{0}
git stash drop stash@{0}
git stash clear
  • git stash list — menampilkan semua stash dengan pesannya.
  • git stash show stash@{0} — melihat isi (statistik) stash paling baru.
  • git stash drop stash@{0} — menghapus satu stash.
  • git stash clear — mengosongkan seluruh daftar.
  • git stash branch <nama> — membuat branch baru dari isi stash, cara teraman menghindari konflik saat pindah branch.

Lanjutkan Kerja di Branch Baru

Ketika working directory kotor dan kalian ingin melanjutkan kerja di branch baru, git stash branch adalah jalan tercepat — membuat branch baru dari titik stash lalu menerapkan isinya sekaligus:

Pindahkan stash ke branch baru
git stash branch fitur/form-login
git status

Ini menghindari konflik saat checkout yang biasa terjadi bila isi stash tidak cocok dengan kondisi branch tujuan. Setelah berhasil, stash terhapus otomatis dari daftar — tidak perlu git stash drop tambahan.

Menyimpan File Untracked

Perlu diingat: git stash secara default tidak menyentuh file untracked — file baru yang belum pernah git add tetap tertinggal di working directory. Jika kalian juga ingin menyimpan file baru itu, tambahkan flag -u (atau -a untuk menyertakan file ignored):

Stash termasuk file untracked
git stash -u
git status

Dengan git stash -u, working directory menjadi benar-benar bersih — termasuk file baru. Tanpa flag ini, file untracked akan "ikut pindah" dan berpotensi menyelinap ke branch lain.

Membersihkan File Untracked dengan Git Clean

Saat stash sudah diambil, masih mungkin ada file untracked yang tersisa — misalnya artefak build atau file uji coba yang tidak diinginkan. Di sinilah git clean berperan.

Aturan emas: selalu cek dulu dengan dry-run sebelum menghapus apa pun.

Dry-run lalu benar-benar hapus
git clean -n
git clean -fd
  • -n (dry-run) — menampilkan daftar file dan folder yang akan dihapus, tanpa menghapus.
  • -f (force) — benar-benar menghapus.
  • -d — ikut menyertakan direktori untracked.
  • -x — ikut menyertakan file yang di-ignore (misal .env) — sangat berbahaya.

Warning

git clean tidak bisa di-undo — file yang dihapus tidak ada di Git sehingga tidak bisa di-recover lewat reflog. Selalu jalankan git clean -n lebih dulu, dan jangan pernah mengetik git clean -xfd sembarangan karena bisa menghapus .env.local dan file penting lainnya.

Kombinasi yang paling sering dipakai tim: git clean -fd untuk membuang file dan folder untracked biasa; git clean -n untuk audit sebelum eksekusi.

Penutup

Episode ini melengkapi perangkat pembersih Git kalian: git stash dan git stash save "pesan" menyimpan perubahan sementara, git stash apply dan git stash pop mengembalikannya, git stash list, git stash drop, dan git stash clear mengelola tumpukan, git stash -u ikut menyimpan file untracked, serta git clean -n dan git clean -fd membersihkan file untracked dengan aman.

Poin yang harus kalian bawa:

  • Stash menyimpan perubahan tanpa harus commit — sempurna untuk pindah branch mendadak.
  • git stash pop mengambil dan menghapus stash; git stash apply hanya mengambil.
  • git stash -u menyertakan file untracked; default tidak.
  • Selalu dry-run git clean -n sebelum menghapus dengan git clean -fd.
  • git clean tidak bisa di-undo — periksa dua kali sebelum mengeksekusi.

Stash merapikan working directory; episode berikutnya merapikan history itu sendiri. Di episode 16 kita membahas Interactive Rebase & History Cleanup — menggabungkan, mengganti pesan, dan membuang commit sebelum di-push. Sampai jumpa di episode 16!

Belajar Git - Pengenalan dan Penjelasan Git Stash & Git Clean | Belajar Git & GitHub