Menggunakan git 1.6.4.2, ketika saya mencoba git pull
saya mendapatkan kesalahan ini:
error: unable to resolve reference refs/remotes/origin/LT558-optimize-sql: No such file or directory
From git+ssh://remoteserver/~/misk5
! [new branch] LT558-optimize-sql -> origin/LT558-optimize-sql (unable to update local ref)
error: unable to resolve reference refs/remotes/origin/split-css: No such file or directory
! [new branch] split-css -> origin/split-css (unable to update local ref)
Saya sudah mencoba git remote prune origin
, tetapi itu tidak membantu.
Jawaban:
Coba bersihkan repositori lokal Anda dengan:
man git-gc (1):
man git-remote (1):
sumber
git remote prune origin
perintah dijalankan pada copy pekerjaan lokal saya atau pada repositori jarak jauh?Terjadi pada saya juga. Dalam kasus saya, wasit yang buruk adalah master, dan saya melakukan yang berikut:
Ini membuat git mengembalikan file ref. Setelah itu semuanya berjalan seperti yang diharapkan lagi.
sumber
.git
ada folder dengan melakukanls -la
jika tidak, lihat isi file.git
file untuk menemukan folder .git yang sebenarnya di mana referensi tersebut berada..git
isi file dalam kasus saya:gitdir: ../.git/modules/my-submodule-name
Ini berhasil bagi saya:
sumber
git remote prune origin
Bagi saya, ini berfungsi untuk menghapus file yang melempar kesalahan dari folder
.git/refs/remotes/origin/
.sumber
NULL
s.Cobalah:
sumber
Jalankan perintah berikut:
sumber
Saya hanya ingin menambahkan bagaimana itu bisa terjadi sehingga referensi rusak.
Kemungkinan penyebab root
Pada sistem saya (Windows 7 64-bit), ketika BSOD terjadi , beberapa file referensi yang tersimpan (kemungkinan besar saat ini dibuka / ditulis ketika BSOD terjadi) ditimpa dengan
NULL
karakter (ASCII 0).Seperti yang disebutkan orang lain, untuk memperbaikinya, cukup dengan menghapus file referensi yang tidak valid dan mengambil ulang atau menarik kembali repositori.
Contoh
Kesalahan:
cannot lock ref 'refs/remotes/origin/some/branch': unable to resolve reference 'refs/remotes/origin/some/branch': reference broken
Solusi: hapus file
%repo_root%/.git/refs/remotes/origin/some/branch
sumber
error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': reference broken
. Mencobagit pull
setelah menghapus file pertama yang dikembalikanfatal: update_ref failed for ref 'HEAD': cannot lock ref 'HEAD': unable to resolve reference 'refs/heads/master': reference broken
. Setelah menghapus file keduagit pull origin master
berhasil.Saya memiliki masalah yang sama dan menyelesaikannya dengan masuk ke file yang salah pada:
File ini penuh dengan nol, saya menggantinya dengan referensi terbaru dari github.
sumber
.git/refs/remotes/origin/master
itu hanya kosong. Memecahkan masalah dengan menghapusnya.Dalam kasus saya, masalahnya selesai setelah saya menghapus semua file referensi di bawah direktori
.git
.Jika Anda melihat pesannya, ia akan memberi tahu Anda file mana yang perlu Anda hapus (khusus).
File yang akan dihapus berada di bawah
.git/refs/remotes
.Saya baru saja menghapus semua file di sana, dan menjalankan gc prune
Setelah itu, semuanya bekerja dengan baik.
sumber
Penjelasan : Tampaknya cabang repo jarak jauh Anda (di Github / bitbucket) telah dihapus, meskipun referensi lokal Anda tidak diperbarui dan menunjuk ke referensi yang tidak ada.
Untuk mengatasi masalah ini:
Untuk bacaan ekstra - Referensi dari dokumentasi Github :
sumber
git fetch --prune
perbaiki kesalahan ini untuk saya:Ini mengasumsikan bahwa cabang yang melanggar telah dihapus pada remote.
sumber
--prune
yang dapat saya lihat. Juga proTip: hapus prompt kata sandi yang tidak berguna setelah menempelkan contoh.Jika kesalahan ini “tidak dapat memperbarui ref lokal” berulang, bahkan setelah menerapkan jawaban oleh Vojtech Vitek atau Michel Krämer, Anda mungkin memiliki ref yang buruk pada repositori lokal DAN master Anda.
Dalam hal ini, Anda harus menerapkan kedua perbaikan tanpa menarik atau mendorong di antara ...
Resolusi permanen bagi saya hanya tercapai setelah menerapkan kedua perbaikan sebelum push / pull.
sumber
Untuk Menjawab ini dengan sangat singkat, masalah ini muncul ketika lokal Anda memiliki beberapa informasi tentang remote dan seseorang mengubah sesuatu yang membuat remote dan perubahan Anda tidak sinkron.
Saya mendapatkan masalah ini karena seseorang telah menghapus cabang jarak jauh dan sekali lagi dibuat dengan nama yang sama.
Untuk menangani masalah seperti itu, lakukan tarik atau ambil dari jarak jauh.
atau jika Anda menggunakan GUI, lakukan pengambilan dari jarak jauh.
sumber
Saya bisa bekerja dengan
sumber
Coba ini:
Branch_Name
, cabang tempat Anda saat ini.Jika Anda hanya melakukan
git pull
, itu menarik semua nama cabang yang dibuat juga.Jadi adalah alasan Anda mendapatkan ini:
sumber
Bagi saya, saya memiliki cabang setempat yang bernama
feature/phase2
dan cabang yang jauh dinamaifeature/phase2/data-model
. Konflik penamaan adalah penyebab masalah, jadi saya menghapus cabang lokal saya (Anda bisa mengganti nama jika ada yang perlu Anda pertahankan)sumber
Jika
git gc --prune=now
dosen tidak membantumu. (Nasib buruk seperti saya)Apa yang saya lakukan adalah menghapus proyek di lokal, dan mengkloning kembali seluruh proyek.
sumber
Saya menggunakan Tower dan karena alasan tertentu nama folder saya
.git/refs/remotes/origin/Github
. Mengubahnya menjadi huruf kecil.git/refs/remotes/origin/github
memecahkan masalah.sumber
Saya memiliki masalah yang sama. saya mengikuti langkah-langkah berikut
1) beralih cabang Anda yang memiliki masalah ke cabang lain
2) hapus cabang itu
3) checkout lagi.
Catatan: - Anda dapat menyimpan perubahan yang tidak dikomit dan mengembalikannya.
sumber
Saya menggunakan
git prune origin
dan melakukan pekerjaan.sumber
Saya memiliki masalah yang sama dengan pembaruan komposer. Tetapi bagi saya itu hanya berfungsi setelah saya membersihkan cache komposer dan setelah menghapus isi folder vendor:
sumber
Mendapat masalah ini ketika mencoba mengkloning dari
git bundle
file yang dibuat, tidak ada jawaban lain yang berhasil karena saya tidak bisa mengkloning repo (jadigit gc
dan menghapus / mengedit file tidak ada pertanyaan).Namun ada cara lain untuk memperbaikinya - file sumber
.bundle
file dimulai dengan:Cukup menghapus baris keempat dengan vim memperbaiki masalah.
sumber
Saya punya masalah ini saat menggunakan SourceTree. Saya mencoba menarik lagi dan berhasil. Saya pikir saya Apakah penyihir cabang (checkout) terlalu cepat :).
Situasi saya sedikit berbeda dari poster karena repositori saya relatif kooperatif, tanpa korupsi yang jelas.
sumber
sumber
Menghadapi masalah yang sama ketika repositori dihapus dan dibuat dengan nama yang sama. Ini hanya berfungsi ketika saya mengatur ulang url jarak jauh seperti di bawah ini;
Verifikasi url jarak jauh:
Sekarang, semua perintah harus berfungsi seperti biasa.
sumber
Baru saja mengalami masalah hari ini.
Metode pemecahan masalah: Dengan SourceTree di Windows Server, Anda dapat mencoba menjalankannya sebagai Administrator. Itu memperbaiki masalah saya "tidak dapat memperbarui ref lokal" di Atlassian Source Tree 2.1.2.5 pada Windows Server 2012 R2 di domain.
Jika Anda juga bisa meniru situasi ini, itu membuktikan bahwa masalahnya disebabkan oleh masalah izin. Lebih baik menelusuri dan menemukan penyebab root - mungkin beberapa file tertentu dimiliki oleh pengguna lain dan semacamnya - jika tidak ada efek samping yang tidak diinginkan: Anda harus menjalankan SourceTree sebagai Administrator untuk selamanya.
sumber
Menuliskan kasus khusus yang dapat menyebabkan masalah ini.
Suatu hari saya mendorong cabang bernama "fitur / subfeature", sambil memiliki cabang "fitur" di remote.
Operasi itu bekerja dengan baik tanpa ada kesalahan di pihak saya, tetapi ketika rekan kerja saya mengambil dan / atau menarik cabang apa pun, mereka semua memiliki pesan kesalahan yang sama persis
unable to update local ref
,cannot lock ref 'refs/remotes/origin/feature/subfeature
.Ini dipecahkan dengan menghapus
feature
cabang pada remote (git push --delete origin feature
) dan kemudian menjalankangit remote prune origin
repo rekan kerja saya, yang menghasilkan pesan termasuk* [pruned] origin/feature
.Jadi, tebakan saya
git fetch
sedang mencoba membuat foldersubfeature
ref difeature
git secara internal (.git / ...), tetapi membuat folder gagal karena sudah adafeature
ref.sumber
Kami mendapatkan masalah ini ketika pengembang di Mac membuat cabang dengan simbol lebih besar dari ">" pada nama cabang.
Itu menyebabkan masalah di TeamCity, dan pada komputer berbasis Windows lokal yang menjalankan SourceTree. BitBucket membiarkannya tanpa masalah.
Untuk menyelesaikan pengguna menghapus cabang dan membuatnya kembali. Itu bagus dan mudah.
sumber
Punya pesan yang sama tetapi dengan direktori, mendapat pesan gagal pada tarikan.
git --prone juga tidak membantu saya. Ternyata ada file dengan nama yang sama dengan direktori yang dibuat dari jarak jauh.
Harus pergi ke .git \ logs \ refs \ remote \ origin dan menghapus file lokal - lalu tarik lagi, semuanya baik-baik saja.
sumber