Git fatal: Referenz hat ungültiges Format: 'refs / Heads / Master

101

Ich verwende Dropboxzum Synchronisieren eines gitRepositorys, aber jetzt, wenn ich es versuche und pusheine Fehlermeldung erhalte:

fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'

Es scheint also, dass Dropbox einen Konflikt erkannt und eine Kopie erstellt hat. Ok, kein Problem, also habe ich die in Konflikt stehende Datei gelöscht. Trotzdem wird der obige Git-Fehler angezeigt.

$ git checkout master
    M   index.html
    Already on 'master'
$ git add .
$ git commit -a -m "Cleanup repo"
    [master ff6f817] Cleanup repo
    1 file changed, 5 insertions(+), 5 deletions(-)
$ git push
    fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'
    The remote end hung up unexpectedly`

Wie kann ich das beheben? Vielen Dank.

Justin
quelle

Antworten:

178

Erstellen Sie eine Sicherungskopie Ihres Repos, wenn Sie sich nicht sicher sind, da diese Befehle irreversibel sind.

Gehen Sie zuerst in Ihr Repo-Verzeichnis.

cd myrepo

Suchen Sie dann rekursiv nach den in Konflikt stehenden Dateien und löschen Sie sie

find . -type f -name "* conflicted copy*" -exec rm -f {} \;

Zuletzt entfernen Sie alle "widersprüchlichen" Referenzen aus der gepackten Refs-Datei von git

awk '!/conflicted/' .git/packed-refs > temp && mv temp .git/packed-refs
Fahrbahn
quelle
1
Ich hatte das gleiche Problem und dies hat es für mich behoben. Danke dir!
Erik
Das hat es auch für mich behoben. Danke dir!
Cecconeurale
1
für Macos Benutzerfind . -type f -name "* conflicted copy*" -delete
Soyoes
42

Die in Konflikt stehende Datei könnte sich an mehreren Stellen befinden, die ich untersuchen würde:

.git/logs/refs/remotes/origin/
.git/logs/refs/heads/
.git/refs/remotes/origin/
.git/refs/heads/

Oder Sie suchen überall im .gitUnterverzeichnis:find . -name '*conflicted*'

Oder listen Sie andernfalls die aktiven Zweige mit auf git branch -aund löschen Sie git branch -dverdächtige Elemente ( ).

Marco Leogrande
quelle
Überall in gibt es widersprüchliche Dateien .git. Ich ging durch und löschte sie alle, und es ist behoben. Vielen Dank.
Justin
2
@ Justin Ich bin froh, dass ich helfen konnte. Wenn diese oder eine andere Antwort Ihr Problem gelöst hat, markieren Sie es bitte als akzeptiert.
Marco Leogrande
2
Unter Mac OS X verwenden Sie: find . -name '*conflicted*'(Bearbeiten: Format)
xgMz
1
@xgMz Danke, ich werde meine Antwort aktualisieren, da Ihre Lösung allgemeine Gültigkeit hat.
Marco Leogrande
1
Mit einer einfachen habe findich eine einzelne widersprüchliche Datei gefunden und das Problem manuell mit zwei behoben mv. Dies langsam und schrittweise zu tun, ist der sicherste Weg.
Pid
8

Dies passiert auch unserem Team, wenn mein Kollege seine Änderungen vorantreibt und den PC herunterfährt, bevor Dropbox aktualisiert wird.

Ich habe es so einfach gelöst.

Gerade die widersprüchliche Kopie gelöscht. (XXXXs widersprüchliche Kopie JJJJ-MM-TT)

Und ziehen Sie es normal.

Beachten Sie, dass mein Kollege die Änderungen vor dem Durcheinander hatte. Und er schiebt seine Änderungen wieder. Diesmal kein Herunterfahren. :) :)

Hareen Laks
quelle
1
hat absolut perfekt für mich funktioniert :) thx - für mich hat dropbox einen seltsamen String-Dateinamen erstellt, der nicht mit "update" kompatibel war
cV2
1
Das hat bei mir funktioniert! Es gab eine Datei mit "Konfliktkopie" im Namen im Ordner / refs / Heads, die gelöscht wurde, dann gezogen / gedrückt wurde und alles ist in Ordnung. Vielen Dank!
DiscDev
7

Ich konnte alle in Konflikt stehenden Dateien aus meinem .git-Ordner löschen, erhielt jedoch weiterhin Fehler bei Dateien, die nicht mehr vorhanden waren.

Die Lösung für mich bestand darin, .git/refs/packed_refsZeilen zu öffnen und zu löschen, die den Text "Konflikt" enthielten.

Drew
quelle
1

Für mich war es ein Fehler: fatal: Reference has invalid format: 'refs/tags/r0.2:3'

Sie können zur Datei /.git/packed_refs gehen und die Zeile für löschenrefs/tags/r0.2:3

Dann fing es an zu arbeiten. Aber warum es überhaupt passiert ist, weiß ich nicht.

Rajesh Paul
quelle
0

Versuchen Sie es git checkout masterzuerst, um auf den gesunden, gut benannten Zweig zu gelangen.

Sack
quelle
Aktualisierte Ausgabe im ursprünglichen Beitrag.
Justin
Hm, könnten Sie eine vollständige versuchen git push origin masterund auch die Ausgabe von git branch -abitte einfügen ?
Poke
Der gleiche Fehler hier ... der Versuch git branch -aführt zu genau diesem Fehler!
Trusktr
Das Problem befindet sich im Remote-Repository, sodass das Abrufen oder Auschecken es nicht löst. Die anderen Antworten beziehen sich auf das direkte Reparieren der Dateien auf der Fernbedienung und funktionieren einwandfrei. IHR RAT IST SEHR GUT, aber es ist keine Antwort auf das Problem.
Pid
0

Ich habe den gleichen Fehler bekommen

fatal: Referenz hat ungültiges Format: 'refs / Heads / Somebranch (1)'

für den folgenden Befehl

git branch

Dann suchte ich mit dem Befehl nach einem fehlerhaften Namen (Zweigstellenname gefolgt von (1))

find . -name 'somebranch (1)'

Und es zeigte das folgende Ergebnis

./.git/refs/heads/somebranch (1)

Welches ist eine duplizierte Version von somebranch IMO. Also entfernte ich dies, indem ich den Befehl find ausführte, gefolgt von delete

find . -name 'somebranch (1)' -print -exec rm -rf {} \;

Dann wird der Verzweigungsbefehl erfolgreich ausgeführt

git branch
Zeeawan
quelle
0

Ich bin auf den ähnlichen Fehler gestoßen wie

fatal: Reference has invalid format: 'refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)'

Durch einfaches Löschen der Datei .git/refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)im Remote-Dropbox-Repository wurde das Problem behoben.

Sithu
quelle