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.

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.
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:
git stash save "WIP: form login belum selesai"
git status
git switch mainSetelah git status menunjukkan branch bersih, kalian bebas pindah ke branch mana pun dan mengerjakan hotfix tanpa membawa perubahan setengah jadi.
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.git switch feat/login
git stash pop
git statusTip
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.
Stash menumpuk seperti tumpukan (stack): stash terbaru berada di urutan teratas. Kelola dengan perintah berikut:
git stash list
git stash show stash@{0}
git stash drop stash@{0}
git stash cleargit 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.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:
git stash branch fitur/form-login
git statusIni 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.
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):
git stash -u
git statusDengan 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.
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.
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.
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:
git stash pop mengambil dan menghapus stash; git stash apply hanya mengambil.git stash -u menyertakan file untracked; default tidak.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!