Komputer saya mati dan sekarang salah satu repositori git saya rusak. Ketika saya mencoba untuk membayar master, saya diberitahu:
warning: ignoring broken ref refs/heads/master.
error: Your local changes to the following files would be overwritten by checkout:
com.vainolo.jdraw2d.releng.p2/pom.xml
Please, commit your changes or stash them before you can switch branches.
Aborting
Ketika saya mengeksekusi git stash
saya mendapatkan:
fatal: bad revision 'HEAD'
fatal: bad revision 'HEAD'
fatal: Needed a single revision
You do not have the initial commit yet
Jadi apa yang bisa kulakukan?
Perbarui
Output dari git reflog
:
fatal: bad default revision 'HEAD'
Tidak terlalu menjanjikan ... Hasil dari git fsck
:
error: Invalid HEAD
Checking object directories: 100% (256/256), done.
error: unable to unpack 59551f96b4e87a1c14293c19eb548ce6fa1f196f header
error: inflateEnd: stream consistency error (no message)
fatal: loose object 59551f96b4e87a1c14293c19eb548ce6fa1f196f (stored in .git/objects/59/551f96b4e87a1c14293c19eb548ce6fa1f196f) is corrupt
.git/refs/heads/master
ada dan apakah isinya adalah hash komit yang valid dari repositori Anda (Anda dapat memeriksanya, misalnya menggunakangit show <hash>
)?.git/refs/heads/master/
adalah sekelompok^@
git reflog
memberitahumu? Sudahkah kamu mencoba larigit fsck
?Jawaban:
Saya berhasil pulih melalui:
sumber
rm <root repository path>/.git/modules/<path to the submodule>/refs/remotes/origin/HEAD
rm -rf .git/refs/remotes/origin
, tetapi Anda mengarahkan saya ke arah yang benarMulailah dengan mengikuti langkah-langkah yang disarankan dalam Memulihkan repositori git yang rusak :
.git/refs
masih mengandung sesuatu yang bermanfaatgit reflog
dan gagal bahwa konten dari.git/logs/refs/heads/master
atau cabang apa pun tempat Anda berada terakhirgit fsck
, berpotensi dengan--unreachable
atau--lost-found
Ini diharapkan akan memungkinkan Anda untuk mencari tahu apa yang
master
harus menjadi referensi sehingga Anda dapat memulihkannya (yaitu memasukkan SHA1 yang benar ke dalam.git/refs/heads/master
).Jika objek apa pun yang terkandung dalam komit itu benar-benar rusak,
HEAD
sayangnya Anda tidak dapat memulihkan komit Anda . Dengan asumsi pohon kerja dan / atau indeks Anda utuh, Anda dapat mencoba agit reset --soft
(atau gagal yang agit reset
) ke komit sebelumnya dan kemudian melakukan ulang komit. Hindari operasi apa pun yang mengubah pohon kerja Anda sagit checkout -f
ataugit reset --hard
.sumber
.git/logs/refs/heads/mybranch
. Ini menunjukkan beberapa jenis sejarah komitmen untuk cabang ini. Menggali itu saya memilih SHA dan mencoba menampilkannya dengangit show
. (Setiap komit memiliki dua SHA, saya memilih yang kedua, tepat sebelum nama penulis.) Yang terakhir rusak tetapi yang sebelumnya bisagit show
n dan saya bisa mendorongnya dengangit push origin abcdef:mybranch
.Saya mengalami masalah serupa setelah layar biru kematian di windows 8.1
Saya punya file di lokasi ini ...
C:\www\<project>\.git\refs\remotes\origin\<problem-branch>
Dan itu kosong sedangkan file cabang lain di folder ini memiliki string panjang di dalamnya.
NB Saya tidak memiliki perubahan / komitmen apa pun
<problem-branch>
filegit fetch --all
untuk mendapatkan cabang itu lagiKemudian tab penyelesaian otomatis mulai bekerja kembali
sumber
Jika tidak ada banyak file yang dimodifikasi, menurut saya cara yang tepat untuk mengatasi masalah ini adalah:
git commit -a
sumber
saya berhasil menyelesaikan ini dengan menghapus file master di direktori git \ refs \ heads
sumber
Setelah pembekuan dihitung dan kecelakaan, cabang git saya rusak dengan pesan:
git fatal: your current branch appears to be broken
. Saya tidak bisa berbuat apa-apa.Setelah melakukan
git fsck
disebutkan bahwa cabang tersebut memilikierror: Invalid HEAD
.refs/heads/<branch>
punyainvalid sha1 pointer
.Setelah mengikuti opsi di sini, saya membuka
.git/refs/heads/<branch>
di editor notepad ++, dan masing-masing karakter sha1 adalahNUL
.Untungnya saya hanya perlu mengatur ulang cabang ke status jarak jauh, dan itu ada di repo bitbucket. Saya mengambil sha1 dari ujung remote repo dan menyalinnya ke
.git/refs/heads/<branch>
simpan, lalu melakukan agit reset --hard HEAD
, dan semuanya kembali normal.sumber
Saya cukup bodoh untuk lupa mendorong dan komputer saya macet saat melakukan komit. Saya bisa memulihkan semuanya kecuali komit terakhir dengan membuka .git / logs / refs / heads /
File ini berisi semua komit (dengan SHA mereka) ke cabang, yang saya lakukan untuk memulihkan adalah:
git checkout master
git reset --hard
Jadi, meskipun Anda membuat kesalahan bodoh, Anda tidak akan langsung ditarik kembali oleh kerja seharian dengan git :)
sumber
Saya tidak dapat melakukan checkout pada cabang master saya karena kesalahan ref tidak dapat mengunci. Saya akhirnya menghapus:
.git/refs/remotes/origin/HEAD
.git/refs/remotes/origin/master
dan memanggil perintah git ini:
sumber
Saya tahu ini adalah respons yang terlambat, tetapi saya mendapatkan kesalahan ini karena saya tidak memiliki
origin/head
. Anda dapat mengetahuinya dengan menjalankangit branch -r
. Jika Anda tidak melihat Andaorigin/head
menunjuk ke asal jauh, Anda dapat mengatur ini dengan menjalankangit remote set-head origin {{your branch name}}
.Sekarang jalankan
git branch -r
lagi, dan Anda akan melihat sesuatu seperti ini:origin/HEAD -> origin/develop
Saya harap ini membantu orang lain yang mengalami masalah ini.
sumber
Komputer saya macet dua kali dan akibatnya, repositori git saya rusak secara lokal. Saya tidak dapat menarik perubahan saya, ia meminta untuk menyetel asal jarak jauh tetapi tidak berhasil di gitKraken.
Pada prompt perintah saya, saya mendapatkan kesalahan ini
Saya tahu bahwa referensi saya rusak dan perlu diperbaiki. Apa yang harus saya lakukan adalah, ke git bash (Di SourceTree klik "terminal"). Kemudian arahkan ke folder referensi seperti ini
akan ada nama file
master
disana, gunakanls
untuk melihat apa yang ada di direktorinya. Kemudian hapus saja menggunakan rm masterbam, file yang rusak hilang. Sekarang jika Anda mengeluarkan perintah git branch -a, itu akan menampilkan ini
Kemudian keluarkan perintah ini, dan itu akan memperbaiki referensi Anda
Singkatnya, jika Anda akan mencoba menarik remote, itu akan menampilkan nama remote kosong yang telah diperbaiki.
sumber
Saya memiliki masalah yang sama tetapi tidak berhasil, tidak dapat menemukan masalahnya. Saya mengambil repo saya ke samping, mengkloning ulang yang dari server dan mencoba menggabungkannya. Tentu saja itu menunjukkan banyak file yang tidak terkait dengan cabang saya, tetapi membantu mengisolasi file yang diperlukan.
sumber
Periksa apakah MSWindows membuat file desktop.ini yang mengandung git? itu untuk saya. Setelah saya menghapus semuanya di subfolder dari direktori .git, maka itu berfungsi.
sumber
Saya mengalami masalah yang sama ketika Android Studio dihentikan tiba-tiba (karena kehilangan daya ke komputer).
Saya menyelesaikannya dengan menyalin konten
C:\Users\myusername\AndroidStudioProjects\MyBrokenApp\.git\refs\heads\master
file saya ke fileC:\Users\myusername\AndroidStudioProjects\MyBrokenApp\.git\refs\remotes\origin\master
file .(Sebelumnya, saya juga mengaktifkan opsi 'Paksa Dorong' di Android Studio, tetapi menurut saya ini bukan langkah yang perlu.)
catatan:
Saya menemukan solusi ini dengan membandingkan konten file di
C:\Users\myusername\AndroidStudioProjects\MyBrokenApp\.git\
direktori saya (termasuk subdirektori) dengan file yang sesuai di proyek lain yang sehat - misalnya,C:\Users\myusername\AndroidStudioProjects\MyHealthyApp\.git\
. .Anda mungkin memiliki file lain yang rusak, tetapi dengan membandingkan dengan proyek lain yang sehat, Anda dapat dengan cepat menemukan apa yang salah.
Jika Anda tidak memiliki proyek lain yang sehat dengan konfigurasi git, mungkin ada baiknya membuat yang sederhana dengan cara yang sama seperti Anda membuat proyek yang rusak sehingga dapat menyelidiki, membandingkan dan memperbaiki, dll.
PS - Pesan kesalahan saya (diedit) adalah:
warning: ignoring broken refs/remotes/origin/master.fatal bad revision 'refs/remotes/origin/master..refs/heads/master' during executing git -c core.quotepath=false log refs/remotes/origin/master..refs/heads/master --pretty=format --encoding=UTF-8 -M --name-status -c --
sumber
Maafkan saya jika saya mengulangi setelah seseorang (saya belum membaca semua tanggapan). Menurut pendapat saya, cara termudah untuk mengatasi masalah ini adalah dengan menyalin proyek tanpa .git dan .idea, membersihkannya, mengkloning dari git, menghapus semuanya kecuali direktori di atas, lalu menempelkan salinan sebelumnya ke repo yang baru dibuat dengan .git dan .idea . Semoga masuk akal.
sumber