Mein Computer ist tot und jetzt ist eines meiner Git-Repositories kaputt. Wenn ich versuche, den Master auszuchecken, wird Folgendes angezeigt:
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
Wenn ich ausführe, git stash
bekomme ich:
fatal: bad revision 'HEAD'
fatal: bad revision 'HEAD'
fatal: Needed a single revision
You do not have the initial commit yet
Was kann ich also tun?
Aktualisieren
Ausgabe git reflog
:
fatal: bad default revision 'HEAD'
Nicht sehr vielversprechend ... Ausgabe von 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
vorhanden ist und ob der Inhalt ein gültiger Commit-Hash Ihres Repositorys ist (Sie können dies überprüfen, z. B. mithilfe vongit show <hash>
)?.git/refs/heads/master/
sind ein Haufen^@
git reflog
sagt dir das? Hast du versucht zu rennengit fsck
?Antworten:
Ich konnte mich erholen durch:
quelle
rm <root repository path>/.git/modules/<path to the submodule>/refs/remotes/origin/HEAD
rm -rf .git/refs/remotes/origin
, aber du hast mich in die richtige RichtungBefolgen Sie zunächst die unter Wiederherstellen eines defekten Git-Repositorys vorgeschlagenen Schritte :
.git/refs
noch etwas Nützliches enthalten istgit reflog
ob der Inhalt.git/logs/refs/heads/master
oder der Zweig, in dem Sie sich zuletzt befanden, fehlgeschlagen istgit fsck
, möglicherweise mit--unreachable
oder--lost-found
Auf diese Weise können Sie hoffentlich herausfinden, wie der
master
Ref lauten sollte, damit Sie ihn wiederherstellen können (dh den richtigen SHA1 einfügen.git/refs/heads/master
).Falls ein in diesem Commit enthaltenes Objekt wirklich beschädigt ist, können Sie Ihr
HEAD
Commit leider nicht wiederherstellen . Angenommen, Ihr Arbeitsbaum und / oder Index sind intakt, können Sie versuchengit reset --soft
(oder fehlschlagengit reset
), das vorherige Commit durchzuführen, und dann das Commit erneut ausführen. Vermeiden Sie alle Operationen , die Ihre Arbeits Baum sa änderngit checkout -f
odergit reset --hard
.quelle
.git/logs/refs/heads/mybranch
. Es zeigt eine Art Geschichte von Commits für diesen Zweig. Beim Durchstöbern habe ich SHAs ausgewählt und versucht, sie mit anzuzeigengit show
. (Jedes Commit hat zwei SHAs, ich habe das zweite ausgewählt, kurz vor dem Namen des Autors.) Das letzte war korrupt, aber das vorhergehende konntegit show
n sein, und ich konnte es dann mit pushengit push origin abcdef:mybranch
.Ich hatte ein ähnliches Problem nach einem Bluescreen des Todes unter Windows 8.1
Ich hatte eine Datei an diesem Ort ...
C:\www\<project>\.git\refs\remotes\origin\<problem-branch>
Und es war leer, während die anderen Zweigdateien in diesem Ordner lange Zeichenfolgen enthalten.
NB Ich hatte keine Änderungen / Commits
<problem-branch>
Datei gesichertgit fetch --all
um den Zweig wieder zu bekommenDann begann die automatische Vervollständigung der Registerkarte wieder zu funktionieren
quelle
Wenn es nicht viele geänderte Dateien gibt, ist der bequeme Weg, um dieses Problem zu lösen, meiner Meinung nach:
git commit -a
quelle
Ich habe es geschafft, dies durch Löschen der Master-Datei im Verzeichnis git \ refs \ Heads zu lösen
quelle
Nach einem berechneten Einfrieren und Absturz wurde mein Git-Zweig mit der Meldung beschädigt :
git fatal: your current branch appears to be broken
. Ich könnte nichts machen.Nachdem
git fsck
erwähnt wurde, dass die Niederlassung eine hatteerror: Invalid HEAD
.refs/heads/<branch>
hatte eineinvalid sha1 pointer
.Nachdem ich den Optionen hier
.git/refs/heads/<branch>
gefolgt war , öffnete ich sie in einem Editor für Editor ++ und jedes der sha1-Zeichen warNUL
.Zum Glück musste ich den Zweig nur auf den Remote-Status zurücksetzen, und das war auf einem Bitbucket-Repo. Ich nahm den sha1 von der Spitze des Remote-Repos und kopierte ihn in den
.git/refs/heads/<branch>
gespeicherten, dann machte ich einengit reset --hard HEAD
und alles wieder normal.quelle
Ich war idiotisch genug, um zu vergessen, zu pushen, und mein Computer stürzte ab, während ich ein Commit durchführte. Ich konnte jedoch alles außer dem letzten Commit wiederherstellen, indem ich .git / logs / refs / Heads / öffnete.
Diese Datei enthält alle Commits (mit ihren SHAs) für den Zweig. Was ich getan habe, um sie wiederherzustellen, war:
git checkout master
git reset --hard
Selbst wenn Sie einen dummen Fehler machen, werden Sie nicht sofort von einem ganzen Arbeitstag mit git zurückgenommen :)
quelle
Ich weiß, dass es eine zu späte Antwort ist, aber ich habe diesen Fehler erhalten, weil ich keine hatte
origin/head
. Sie können dies durch Ausführen herausfindengit branch -r
. Wenn Sie nicht sehen, dass Sieorigin/head
auf einen entfernten Ursprung zeigen, können Sie dies durch Ausführen festlegengit remote set-head origin {{your branch name}}
.Laufen
git branch -r
Sie jetzt noch einmal und Sie sollten so etwas sehen:origin/HEAD -> origin/develop
Ich hoffe, dies hilft allen anderen, die auf dieses Problem stoßen.
quelle
Ich konnte meinen Hauptzweig nicht auschecken, da der Ref-Fehler nicht gesperrt werden konnte. Am Ende habe ich gelöscht:
.git/refs/remotes/origin/HEAD
.git/refs/remotes/origin/master
und diesen git-Befehl aufrufen:
quelle
Verzeihen Sie mir, wenn ich nach jemandem wiederholen würde (ich habe nicht alle Rückmeldungen gelesen). Meiner Meinung nach ist der einfachste Weg, das Problem zu lösen, das Projekt ohne .git und .idea zu kopieren, es zu bereinigen, von git zu klonen, alles außer den oben genannten Verzeichnissen zu löschen und dann die vorherige Kopie mit .git und .idea in das neu erstellte Repo einzufügen . Hoffe es macht Sinn.
quelle
Mein Computer stürzte zweimal ab und mein Git-Repository wurde lokal beschädigt. Ich konnte meine Änderungen nicht abrufen, es wurde gefragt, ob der Remote-Ursprung festgelegt werden soll, aber es funktionierte nicht in gitKraken.
An meiner Eingabeaufforderung wurde dieser Fehler angezeigt
Ich wusste, dass meine Referenzen kaputt sind und repariert werden müssen. Was ich tun musste, war, Bash zu spielen (Klicken Sie in SourceTree auf "Terminal"). Navigieren Sie dann zu einem solchen Referenzordner
Dort wird ein Dateiname angezeigt
master
, mitls
dem Sie sehen können, was sich im Verzeichnis befindet. Dann löschen Sie es einfach mit rm masterbam, die beschädigte Datei ist weg. Wenn Sie nun den Befehl git branch -a ausgeben, wird dieser ausgegeben
Geben Sie dann diesen Befehl ein, und Ihre Referenzen werden korrigiert
Zusammenfassend sollte beim Versuch, die Fernbedienung zu ziehen, der leere Name der Fernbedienung angezeigt werden, der behoben wurde.
quelle
Ich hatte das gleiche Problem, aber kein Glück, konnte das Problem nicht herausfinden. Ich nahm mein Repo zur Seite, klonte das Repo erneut vom Server und versuchte, es zwischen ihnen zusammenzuführen. Natürlich wurden viele Dateien angezeigt, die nicht mit meinem Zweig zusammenhängen, aber helfen, die erforderlichen Dateien zu isolieren.
quelle
Überprüfen Sie, ob MSWindows desktop.ini-Dateien erstellt hat, die das Git unterstützen. es tut für mich. Sobald ich sie alle in den Unterordnern des .git-Verzeichnisses lösche, funktioniert es.
quelle
Ich hatte das gleiche Problem, als Android Studio plötzlich beendet wurde (aufgrund eines Stromausfalls am Computer).
Ich habe es gelöst, indem ich den Inhalt meiner
C:\Users\myusername\AndroidStudioProjects\MyBrokenApp\.git\refs\heads\master
Datei in meineC:\Users\myusername\AndroidStudioProjects\MyBrokenApp\.git\refs\remotes\origin\master
Datei kopiert habe .(Früher hatte ich in Android Studio auch die Option "Push erzwingen" aktiviert, aber ich denke nicht, dass dies ein notwendiger Schritt war.)
Hinweis:
Ich habe diese Lösung gefunden, indem ich den Inhalt der Dateien in meinem
C:\Users\myusername\AndroidStudioProjects\MyBrokenApp\.git\
Verzeichnis (inkl. Unterverzeichnisse) mit den entsprechenden Dateien in einem anderen fehlerfreien Projekt verglichen habe - zC:\Users\myusername\AndroidStudioProjects\MyHealthyApp\.git\
.Möglicherweise haben Sie eine andere Datei, die beschädigt ist. Wenn Sie jedoch mit einem anderen fehlerfreien Projekt vergleichen, sollten Sie schnell erkennen können, was falsch ist.
Wenn Sie kein anderes fehlerfreies Projekt haben, für das git konfiguriert ist, kann es sich lohnen, ein einfaches Projekt auf die gleiche Weise zu erstellen, wie Sie Ihr fehlerhaftes Projekt erstellt haben, damit Sie es untersuchen, vergleichen und beheben können.
PS - Meine Fehlermeldung (bearbeitet) war:
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 --
quelle