wake-up-neo.com

Gebrochener Zweig in git, fatal: Ihr aktueller Zweig scheint gebrochen zu sein

Hier ist mein Fall:

  • Ich habe an einem Zweig gearbeitet.
  • Neue Commits an die Fernbedienung geschoben.
  • Zurück zur Hauptniederlassung gewechselt. 

Aber plötzlich, nachdem ich git checkout master eingegeben hatte, stieß mein Computer auf blauer Bildschirm des Todes und es kam zu einem unerwarteten Herunterfahren. Nachdem ich meinen Computer wieder gestartet hatte, habe ich den Status meiner aktuellen Niederlassung überprüft und als Ergebnis erhielt jede einzelne Datei alle als markierte neue Dateien.

Jetzt bin ich an diesem Punkt festgefahren und nach dem git log-Befehl bekomme ich einen Fehler 

$ git log
fatal: your current branch appears to be broken

Wie kann ich dieses Problem lösen und meine Zweigstelle wiederherstellen?.

Ich arbeite mit Windows 7 und der neuesten Version von Git Bash

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

20
eirenaios

Ich treffe ein ähnliches Problem unter Windows 7. In meinem Fall , war die aktuelle Zweigdatei (siehe ./git/HEAD) unter \.git\refs\heads defekt. 

Ich habe den Hashcode des gebrochenen aktuellen Zweigs auf .git\logs\refs\heads mit demselben Zweignamen gefunden. 

Und ich habe das Problem behoben, indem ich diese Datei (.git\logs\refs\heads\xxx) über den Editor öffnete und die vierte Nummer (den Hashcode) nach (.git\refs\heads\xxx) kopierte.

16
David Zhang

Die Dateien im Verzeichnis .git\refs\heads sind Ihre Niederlassungen. Überprüfen Sie diese Dateien. Sie sollten nur einen einzigen SHA-1-Hash mit Commit-Objekten enthalten. Bei diesem Hash handelt es sich um Ihren neuesten SHA-1-Schlüssel und gleichzeitig um Ihr HEAD.

Kopieren Sie den SHA-1-Schlüssel und geben Sie ein 

$ git cat-file -t 5917fefd485f655ab369d4e9eeda3c157c03f514
commit

$ git cat-file -p 5917fefd485f655ab369d4e9eeda3c157c03f514
tree b75cab3c54b780075b312be3e878b389a2baf904
parent 8235189aa22169295243d295fb1cc2ff2f8f7cd5
author Ilker Cat <[email protected]> 1495136738 +0200
committer Ilker Cat <[email protected]> 1495136738 +0200

Die zweite Ausgabe ist, was ein Commit-Objekt im Wesentlichen enthält. Versuchen Sie zu prüfen, ob das Commit-Objekt in Ihrem Master-Zweig unter .git\refs\heads\master und dessen Baumstruktur und die übergeordneten SHA-1-Schlüssel nicht beschädigt sind.

Sogar einige Apostrophe in Ihrer Master-Zweigdatei führen zu einem "gebrochenen Zweig". Es muss nur den neuesten SHIT-1-Hash des COMMIT-Objekts und nichts anderes enthalten.

8
Ilker Cat

Dieser Fehler kann auftreten, wenn Sie versuchen, einen Zweig in einen Zweig mit Namen (oder einen Ordner) umzubenennen.

Wenn dies der Fall ist, gehen Sie zu den Verzeichnissen .git/logs/refs/heads/<name> und .git/refs/heads/<name> und Sie werden feststellen, dass Ihr Zweig nun ein Ordner mit einer Datei darin ist. 

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

5
horsantula

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

Sie sollten in das Root-Verzeichnis Ihres Check-Outs 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 diese
  2. suchen Sie in .git/refs/heads for eine nach Ihrem Zweig benannte Datei. Wenn Sie eine sehen, löschen Sie sie
2

Einige Zeit kann es auch aufgrund von Dateiberechtigungsproblemen auftreten. Überprüfen Sie, ob Sie für alle Dateien unter dem Repository über die entsprechenden Berechtigungen verfügen.

2
Amit P

Hatte dasselbe Problem. Das Entfernen von .git\refs\heads\hat das Problem für mich behoben.

1
Hike Nalbandyan

Ich habe es gelöst, indem ich das Repo in einen neuen Ordner geklont und dann die geänderten Dateien ersetzt habe. Es scheint keine gute Lösung zu sein, aber es ist sicher!

0
reverie_ss