744 Stimmen

Git und böser "Fehler: kann vorhandene Info/Refs nicht sperren fatal"

Nach dem Klonen von einem entfernten Git-Repository (bei bettercodes) habe ich einige Änderungen vorgenommen, commited und versucht zu pushen:

git push origin master

Irrtümer mit:

Fehler: kann vorhandene Infos/Referenzen nicht sperren
fatal: git-http-push fehlgeschlagen

Dieser Fall betrifft ein bereits bestehendes Repository.

Was ich vorher gemacht habe, war:

  1. git config –global http.sslVerify false
  2. git init
  3. git remote add [url]
  4. git clone
  5. Daten ändern
  6. git commit

Bei "bettercodes" habe ich keinen Zugriff auf das Git-Protokoll.

Ich verwende Windows. Die detaillierte Fehlermeldung lautete:

C:\MyWorkStuff\Projects\Ruby\MyProject\>git push origin master
Unable to create branch path https://user:password@git.bettercodes.org/myproject/info/
error: cannot lock existing info/refs
fatal: git-http-push failed

Ich habe vorher geklont, dann den Code geändert und übertragen.

1459voto

arno_v Punkte 16102

Bei mir hat das funktioniert (wird sich in der Fernbedienung nicht ändern):

git remote prune origin

Da diese Antwort vielen Leuten zu helfen scheint, habe ich ein wenig nachgeforscht, was hier eigentlich passiert. Damit werden die Verweise auf entfernte Zweige im Ordner .git/refs/remotes/origin .

Dies hat also keine Auswirkungen auf Ihre lokalen Zweigstellen und ändert nichts an der Entfernung. , aber es aktualisiert die lokalen Verweise auf entfernte Zweige. Es scheint, dass diese Referenzen in einigen Fällen Daten enthalten können, die Git nicht korrekt verarbeiten kann.

712voto

kiran.gilvaz Punkte 6368

Sie wollen versuchen, etwas zu tun:

git gc --prune=now

Ver https://www.kernel.org/pub/software/scm/git/docs/git-gc.html

242voto

johnnyclem Punkte 3104

Das ist mir passiert, als mein Git-Remote (bitbucket.org) seine IP-Adresse geändert hat. Die schnelle Lösung bestand darin, die Remote zu entfernen und neu hinzuzufügen, dann funktionierte alles wie erwartet. Wenn Sie nicht wissen, wie man eine Git-Remote entfernt und neu hinzufügt, hier sind die Schritte:

  1. Kopieren Sie die SSH-Git-URL Ihres bestehenden Remote-Systems. Sie können sie mit diesem Befehl in das Terminal ausgeben:

    git remote -v

was in etwa Folgendes ausgibt:

 origin git@server-address.org:account-name/repo-name.git (fetch)
 origin git@server-address.org:account-name/repo-name.git (push)
  1. Entfernen Sie die Fernbedienung aus Ihrem lokalen Git-Repository:

    git remote rm origin

  2. Fügen Sie die entfernte Datei wieder in Ihr lokales Repository ein:

    git remote add origin git@server-address.org:account-name/repo-name.git

110voto

aliibrahim Punkte 1505

Das habe ich getan, um alle Probleme mit der Sperre zu beseitigen:

git gc --prune=now
git remote prune origin

Das ist wahrscheinlich auch das Einzige, was Sie tun müssen.

Mehr über git gc Befehl hier: https://git-scm.com/docs/git-gc

Mehr über git remote prune hier: https://git-scm.com/docs/git-remote#Documentation/git-remote.txt-empruneem

81voto

akansh tayal Punkte 879

Laufender Befehl git update-ref -d refs/heads/origin/branch repariert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X