Version Control

Cara Fix Cannot Pull with Rebase: You Have Unstaged Changes

Asep Alazhari

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.

Cara Fix Cannot Pull with Rebase: You Have Unstaged Changes

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 pop

Ganti 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 dev

Flag -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 pop

Kalau 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 main

Gue 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 list
  • Apply 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.

Back to Blog

Related Posts

View All Posts »
Navicat Premium Lite vs Premium 18: Review Jujur (2026)
•Database Management

Navicat Premium Lite vs Premium 18: Review Jujur (2026)

Navicat Premium Lite vs Premium 18 dites bareng: apa yang masih gratis di Lite, apa tambahan Standard ($749.99/tahun) dan Enterprise, plus satu bug crash yang udah difix di release candidate.