Pesan lengkap:
error: Ref refs/remotes/origin/user is at 3636498c2ea7735fdcedc9af5ab3c8689e6abe77 but expected a21359c6cc2097c85775cde6a40105f4bd7100ec
From github.com:{github project url}
! a21359c..6273ffc user -> origin/user (unable to update local ref)
git push --force
. Coba larigit pull --force
.Jawaban:
Jika Anda menjalankan git di bawah sistem file yang tidak peka huruf besar-kecil (Windows atau OS X) ini akan terjadi jika ada dua cabang dengan nama yang sama tetapi dengan huruf besar yang berbeda, misalnya
user_model_changes
danUser_model_changes
karena kedua cabang jarak jauh akan cocok dengan referensi pelacakan yang sama .Hapus cabang jarak jauh yang salah (Anda tidak harus memiliki cabang yang berbeda hanya berdasarkan kasus) dan kemudian
git remote prune origin
dan semuanya harus bekerjasumber
.git\refs\remotes\origin
folder dan kemudiangit pull
lagi.Perbaikan Permanen
git update-ref -d
menyelesaikan contoh kesalahan saya ini, misPerhatikan bahwa ini tidak memengaruhi remote.
Dalam kasus saya, yang berikutnya
git fetch
mengambil cabang itu lagi, dan mengikuti git mengambil / menarik tidak lagi memberikan kesalahan "ref remote ada di tetapi diharapkan".Jika itu tidak berhasil, perbaikan sementara:
Perhatikan juga bahwa jika Anda tidak peduli dengan cabang yang dimaksud (mis. Anda hanya ingin memperbarui master, bukan asal / pengguna),
git pull
solusinya adalah mengambil kemudian menggabungkan cabang tertentu yang Anda pedulikan, misalnyasumber
Hapus saja folder dan file di bawah
\.git\refs\remotes\origin
. Berhasil, saat Anda tidak memiliki perubahan yang tidak dicopot.sumber
Saya menjalankan ini untuk memecahkan masalah:
sumber
Gunakan dua perintah di bawah ini satu per satu.
Ini akan menyelesaikan masalah Anda.
sumber
Saya harus menghapus cabang dari baris perintah di:
dan kemudian secara manual melakukan:
Saya bisa melakukan perubahan.
Catatan: Saya menggunakan SourceTree dan tidak dapat melakukan tarikan.
sumber
.git\packed-refs
sebelum diperbaiki untuk saya.Hard reset juga akan menyelesaikan masalah
sumber
Langkah-langkah yang lebih jelas
di terminal
lakukan
ls
, Anda akan melihat beberapa cabang dan KEPALAHapus cabang yang menurut Anda memiliki masalah
Jika tidak berhasil, hapus semua cabang / KEPALA
Semoga berhasil sekarang.
sumber
git update-ref -d <branchname>
?Coba ini, itu berhasil untuk saya. Di dalam terminal:
git remote prune origin
.sumber
Sayangnya, perintah GIT seperti prune dan reset atau push tidak bekerja untuk saya. Prune bekerja sekali dan kemudian masalah kembali.
Solusi permanen yang berhasil bagi saya adalah mengedit file git secara manual. Cukup buka folder .git proyek dan kemudian buka file paket-ref dalam editor teks seperti Notepad ++. Kemudian arahkan ke baris dengan cabang yang gagal dan perbarui panduannya ke yang diharapkan.
Jika Anda memiliki pesan seperti:
"error: tidak dapat mengunci ref 'ref / remote / origin / feature / branch_xxx': ada di 425ea23facf96f51f412441f41ad488fc098cf23 tetapi diharapkan 383de86fed394ff1a1aeefc4a522d886adcecd79"
kemudian pada file cari baris dengan 'ref / remote / origin / feature / branch_xxx'. Penunjuk jalan akan menjadi yang diharapkan (ke-2) - 383de86fed394ff1a1aeefc4a522d886adcecd79. Anda perlu mengubahnya ke yang asli (pertama) - 425ea23facf96f51f412441f41ad488fc098cf23.
Ulangi untuk cabang gagal lainnya dan Anda akan baik untuk melanjutkan. Kadang-kadang setelah mengambil ulang saya harus mengulangi untuk cabang yang sama yang sudah saya 'perbaiki' sebelumnya. Saat mengambil ulang panduan pembaruan GIT dan memberi Anda yang terbaru.
Bagaimanapun masalahnya bukan penghenti acara. Daftar cabang diperbarui. Ini lebih merupakan peringatan.
sumber
git untuk-masing-masing ref --format = 'delete% (refname)' ref / original | git pembaruan-ref --stdin git reflog kedaluwarsa - expire = sekarang - semua git gc --prune = sekarang
sumber
Kasus yang sama di sini, tetapi tidak ada tentang komentar yang diposting itu benar dalam kasus saya, saya hanya memiliki satu cabang (master) dan hanya menggunakan sistem file Unix, kesalahan ini terjadi secara acak ketika saya menjalankan git fetch --progress --probe asal dan cabang berada di depan atau 'asal / master'. Tidak ada yang bisa melakukan, hanya 1 pengguna yang bisa melakukan push.
CATATAN: Saya memiliki submodule dalam repositori acme, dan acme memiliki perubahan submodule baru (komit baru), saya harus terlebih dahulu melakukan pembaruan submodule dengan pembaruan submodule git.
Untuk mengatasi masalah ini (dalam kasus saya) jalankan saja git push terlebih dahulu jika cabang Anda berada di depan.
sumber
Saya tahu ini sudah tua, tetapi saya memiliki perbaikan sendiri. Karena saya menggunakan sumber pohon, kesalahan ini terjadi karena seseorang membuat cabang baru. Pohon sumber bingung tentang ini. Setelah saya menekan tombol "Refresh" di samping "remote branch to pull" combobox, nampaknya sourcetree telah memperbarui daftar cabang, dan sekarang saya dapat menarik dengan sukses.
sumber
Saya memiliki masalah yang sama yang disebabkan karena saya pindah ke komit yang lebih tua meskipun saya sudah mendorong ke cabang terpencil.
Saya menyelesaikannya dengan menghapus cabang lokal saya kemudian memeriksa cabang asal
git checkout origin/my_branch
dan kemudian mengeksekusigit checkout my_branch
sumber
Setelah mencari terus-menerus, ini adalah solusi yang bekerja untuk saya yang memerlukan unsetting / menghapus Hulu
sumber