Broken Branch in Git, fatal: Ihr aktueller Zweig scheint gebrochen zu sein

9

Hier ist mein Fall:

  • Ich habe an einer Filiale gearbeitet.
  • Neue Commits wurden an die Fernbedienung gesendet.
  • Zurück zum Master-Zweig.

Aber plötzlich, nachdem ich git checkout master command eingegeben hatte, traf mein Computer auf den blauen Bildschirm des Todes und es kam zu einer unerwarteten Kraftabschaltung. Nachdem ich meinen Computer gestartet habe, habe ich den Status meines aktuellen Zweiges überprüft und als Ergebnis habe ich jede Datei als neue Dateien markiert.

Jetzt bin ich an diesem Punkt fest und nach git log Befehl bekomme ich Fehler

%Vor%

Wie kann ich dieses Problem lösen und meinen Zweig wiederherstellen?.

Ich arbeite mit Windows 7 und git bash neueste Version

  

Bearbeiten: Ich möchte diesen Zweig nicht löschen.

    
Suresh 08.10.2015, 10:15
quelle

6 Antworten

6

Ich treffe ein ähnliches Problem unter Windows 7. In meinem Fall wurde die aktuelle Datei ( ./git/HEAD ) unter \.git\refs\heads abgebrochen.

Ich habe den Hash-Code des defekten aktuellen Zweiges in .git\logs\refs\heads mit dem gleichen Verzweigungsnamen gefunden.

Und ich habe das Problem behoben, indem ich diese Datei ( .git\logs\refs\heads\xxx ) per Notizblock geöffnet habe und die 4. Nummer (den Hash-Code) nach ( .git\refs\heads\xxx ) kopiert habe

    
David Zhang 05.07.2016 05:02
quelle
4

Die Dateien im Verzeichnis .git \ refs \ heads sind Ihre Zweige. Überprüfen Sie diese Dateien. Sie sollten nur einen SHA-1-Hash für einzelne Commit-Objekte enthalten. Dieser Hash ist Ihr letzter SHA-1 Schlüssel und Ihr HEAD gleichzeitig.

Kopieren Sie die SHA-1-Taste und geben Sie

ein %Vor%

Die zweite Ausgabe ist, was ein Commit-Objekt grundsätzlich enthält. Versuchen Sie zu überprüfen, ob das Commit-Objekt in Ihrem Master-Zweig unter .git \ refs \ heads \ master und seine Baum- und Eltern-SHA-1-Schlüssel nicht beschädigt sind.

Sogar einige Apostrophe innerhalb Ihrer Hauptverzweigungsdatei führen in einen "gebrochenen Zweig". Es darf nur das letzte Commit-Objekt SHA-1 Hash und nichts anderes enthalten.

    
Ilker Cat 26.05.2017 19:50
quelle
4

Dieser Fehler tritt möglicherweise auf, wenn Sie versuchen, einen Zweig in einen Namespace- (oder Ordner-) Zweig umzubenennen.

Wenn das passiert, gehen Sie in die Verzeichnisse .git/logs/refs/heads/<name> und .git/refs/heads/<name> und Sie sehen, dass Ihr Zweig jetzt ein Ordner mit einer darin enthaltenen Datei ist.

Verschieben Sie in beiden Ordnern die Datei auf die Ebene des Ordners, überprüfen Sie diesen Zweig, löschen Sie die jetzt leeren Ordner, und jetzt sollten Sie git checkout -b <name>/<subname> ohne Fehler oder git branch -M <name>/<subname> ausführen können.

    
horsantula 10.02.2018 02:03
quelle
2

Ihr Zweigname enthält jetzt wahrscheinlich einige Sonderzeichen oder etwas ähnliches.

Sie sollten in das root-Verzeichnis Ihres check-out gehen (wo sich das .git/ -Verzeichnis befindet) und

  1. Listenelement bearbeiten .git/packed-refs ; Wenn Sie eine Zeile mit Ihrem Zweignamen sehen, löschen Sie ihn
  2. schau in .git/refs/heads for eine Datei, die nach deinem Zweig benannt ist; wenn du siehe eins, lösche es
Maksym Semenykhin 05.07.2016 05:09
quelle
1

Manchmal kann es auch aufgrund von Problemen mit der Dateiberechtigungen auftreten. Überprüfen Sie, ob Sie die entsprechenden Berechtigungen für alle Dateien im Repository haben.

    
Amit P 28.06.2017 12:06
quelle
1

Hatte das gleiche Problem. Das Entfernen von .git \ refs \ heads \ behob das Problem für mich.

    
Hike Nalbandyan 28.01.2018 07:58
quelle