Cara Fix Cannot Pull with Rebase: You Have Unstaged Changes
Kena 'error: cannot pull with rebase: you have unstaged changes'? Stash kerjaan lo, pull update terbaru, lalu balikin lagi dengan aman. Sudah diuji di Git 2.54.

Git bakal nolak pull with rebase selama ada file yang udah lo edit tapi belum di-commit. Solusinya: simpan dulu perubahan itu pakai git stash, pull, lalu balikin lagi pakai git stash pop. Command lengkapnya ada di bawah.
error: cannot pull with rebase: you have unstaged changes.
Di Git 2.54.0 (Apple Git-157), kalau lo jalanin git pull --rebase padahal ada file tracked yang masih diedit, muncul error kayak gini:
error: cannot pull with rebase: You have unstaged changes.
error: Please commit or stash them.Git berhenti sebelum nyentuh branch lo. Kerjaan lo aman, tapi pull-nya ga jalan sampai working tree bersih. Ada tiga jalan keluar: commit perubahannya, buang, atau stash. Stash itu paling aman karena kerjaan lo tetap ada dan riwayat commit ga keganggu.
Quick Fix
git stash push -m "Temporary stash before pull"
git pull --rebase origin main
git stash popGanti main dengan nama branch yang mau lo pull. git stash push -m fungsinya sama kayak git stash save yang lama, tapi ini bentuk yang sekarang direkomendasiin Git, dan pesan -m bikin stash gampang dicari nanti.
Panduan Step-by-Step
1. Stash perubahan lo
git stash push -m "Temporary stash before pull"Perubahan lo pindah ke stash list, dan working directory jadi bersih. Cek hasilnya pakai git status. Harusnya ga ada yang perlu di-commit.
2. Pull update terbaru
git pull --tags -r origin devFlag -r itu singkatan dari --rebase, jadi commit local lo ditaruh ulang di atas branch remote. Ganti dev dengan nama branch lo.
3. Balikin perubahan lo
git stash popKalau commit yang masuk ga nyentuh baris yang sama, restore-nya mulus. Kalau nyentuh, git stash pop bakal berhenti dengan merge conflict dan entry stash-nya tetap ada. Resolve file yang konflik, stage, lalu jalanin git stash drop kalau lo yakin hasilnya bener.
4. Cek dan lanjut ngoding
Jalanin test atau start app-nya. Pastiin ga ada yang rusak akibat merge sebelum lo commit apa-apa lagi.
Skip Stash: Pakai --autostash
Kalau lo ga perlu ngecek perubahannya, Git bisa stash dan balikin otomatis dalam satu command:
git pull --rebase --autostash origin mainGue jalanin ini di Git 2.54.0 dengan file tracked yang lagi diedit. Pull-nya jalan, Git nge-print Applied autostash., dan perubahan lo balik lagi di working tree. Kalau restore-nya konflik, Git tetap nyimpan entry stash-nya, sama kayak alur manual.
Command-command Stash yang Sering Kepake
Lihat semua stash:
git stash listApply stash tertentu tanpa dihapus:
git stash apply stash@{1}Hapus stash tertentu:
git stash drop stash@{0}Bersihin semua stash:
git stash clear
Best Practices
- Kasih pesan ke setiap stash pakai
-m. Stash list isinya “WIP” semua itu bikin pusing seminggu kemudian. - Commit potongan kecil yang sudah jadi kalau bisa. Makin sedikit stash, makin sedikit kejutan pas pop.
- Hapus stash yang udah ga kepake, biar entry lama ga konflik sama kerjaan baru.
Baca Juga: Gimana Sih Nyembunyikan Riwayat Git di VS Code Biar Workspace Makin Rapi
Baca Juga: Cara Mengatasi Masalah Kompatibilitas Yarn di Cloudflare Pages Build v2
Kesimpulan
Kalau git pull --rebase nolak karena ada perubahan yang belum di-commit, stash dulu, pull, lalu pop. Pakai --autostash kalau lo mau hasil yang sama dalam satu command. Dua-duanya bikin edit dan riwayat commit lo tetap utuh.


