Nach dem Klonen aus dem Remote-Git-Repository (bei Bettercodes) habe ich einige Änderungen vorgenommen, festgeschrieben und versucht zu pushen:
git push origin master
Fehler mit:
Fehler: Vorhandene Informationen / Refs können nicht gesperrt werden
schwerwiegend: Git-http-Push fehlgeschlagen
Dieser Fall betrifft bereits vorhandenes Repository.
Was ich vorher getan habe, war:
git config –global http.sslVerify false
git init
git remote add [url]
git clone
- Daten ändern
git commit
Bei 'bettercodes' habe ich keinen Zugriff auf das Git-Protokoll.
Ich benutze Windows. Der detaillierte Fehler war:
C:\MyWorkStuff\Projects\Ruby\MyProject\>git push origin master
Unable to create branch path https://user:[email protected]/myproject/info/
error: cannot lock existing info/refs
fatal: git-http-push failed
Ich habe vorher geklont, dann den Code geändert und festgeschrieben.
git fetch
vorgit pull
.Antworten:
Bei mir hat das geklappt:
git remote prune origin
Da diese Antwort vielen Menschen zu helfen scheint, habe ich mich ein wenig mit dem befasst, was hier tatsächlich passiert. Dadurch werden Verweise auf entfernte Zweige im Ordner entfernt
.git/refs/remotes/origin
. Dies wirkt sich also nicht auf Ihre lokalen Zweige aus und ändert nichts an entfernten Standorten. Es aktualisiert jedoch die lokalen Verweise, die Sie auf entfernte Zweigstellen haben. In einigen Fällen können diese Referenzen Daten enthalten, die Git nicht richtig verarbeiten kann.quelle
git
vorschlägt, aber ich wollte es nicht tun, da der Befehl so klingt, als würde er etwas mit der Fernbedienung tun.git gc --prune=now
Sie möchten versuchen:
Siehe https://www.kernel.org/pub/software/scm/git/docs/git-gc.html
quelle
git pull
war mit der ähnlichen Fehlermeldung stecken.git
Befehl verwende, der sich mit Remote befasst.git remote prune origin
Das Problem wurde ein für alle Mal behoben.Dies passierte mir, als meine Git-Fernbedienung (bitbucket.org) ihre IP-Adresse änderte. Die schnelle Lösung bestand darin, die Fernbedienung zu entfernen und erneut hinzuzufügen. Dann funktionierte alles wie erwartet. Wenn Sie nicht mit dem Entfernen und erneuten Hinzufügen einer Fernbedienung in Git vertraut sind, gehen Sie wie folgt vor:
Kopieren Sie die SSH-Git-URL Ihrer vorhandenen Fernbedienung. Sie können es mit diesem Befehl auf dem Terminal drucken:
git remote -v
das wird so etwas ausdrucken:
Entfernen Sie die Fernbedienung von Ihrem lokalen Git-Repo:
git remote rm origin
Fügen Sie die Fernbedienung wieder zu Ihrem lokalen Repo hinzu:
git remote add origin [email protected]:account-name/repo-name.git
quelle
git branch -u origin/master
Durch Ausführen des Befehls wurde das Problem
git update-ref -d refs/heads/origin/branch
behoben.quelle
git update-ref -d refs/remotes/origin/my_branch
Ich habe dies behoben, indem ich Folgendes getan habe
Dies setzt voraus, dass Ihre lokalen und Remote-Zweige ausgerichtet sind und Sie nur den Refs-Fehler als nicht schwerwiegend erhalten.
quelle
Ich hatte dieses Problem, weil ich mich in einem Zweig befand, der einen ähnlichen Namen wie ein vorgelagerter Zweig hatte. dh die vorgelagerte Niederlassung wurde angerufen
example-branch
und meine lokale Niederlassung wurde angerufenexample-branch/backend
. Die Lösung bestand darin, den Namen meiner lokalen Niederlassung folgendermaßen zu ändern:quelle
Dies ist wahrscheinlich inzwischen behoben. Aber hier ist, was für mich funktioniert hat.
Standort:
Wenn sich das gesperrte Repository auf der Serverseite befindet:
Wenn das gesperrte Repository nur lokal ist:
Führen Sie diesen Befehl aus:
Korrigieren Sie die Berechtigungen für Ihr (Remote- oder / und lokales) Repository, falls erforderlich. In meinem Fall musste ich
chmod
auf777
undchown
zuapache:apache
Versuchen Sie erneut, aus dem lokalen Repository zu pushen:
quelle
Was für mich funktioniert hat war:
.git/logs/refs/remotes/origin/branch
.git/refs/remotes/origin/branch
git gc --prune=now
quelle
So funktioniert es bei mir.
Noch schnellere Alternative:
cat /dev/null > /var/lock/apache2/DAVlock
quelle
#> rm DAVLock; touch DAVLock; chown www-data.www-data DAVLock; chmod 755 DAVLock; service apache2 restart
Dies klingt nach einem Berechtigungsproblem. Ist es möglich, dass zwei Fenster geöffnet waren und mit separaten Rechten ausgeführt wurden? Überprüfen Sie möglicherweise den Besitz des .git-Ordners.
Überprüfen Sie möglicherweise, ob eine ausstehende Dateisperre geöffnet ist, verwenden Sie möglicherweise lsof, um zu überprüfen, oder das Äquivalent für Ihr Betriebssystem.
quelle
In meinem Fall wurde ein Zweig in ein Unterverzeichnis verschoben und das Verzeichnis als Zweig aufgerufen. Git war davon verwirrt. Als ich den lokalen Zweig löschte (in SourceTree nur mit der rechten Maustaste auf Löschen), funktionierte alles wie gewohnt.
quelle
In meinem Fall habe ich nach Erhalt dieser Nachricht den Befehl zum Auschecken ausgeführt und die folgende Nachricht erhalten:
Nachdem ich diesen Befehl ausgeführt hatte, war ich wieder normal.
quelle
Aktualisieren:
Möglicherweise müssen Sie Ihre ~ / .netrc-Datei bearbeiten:
https://bugs.launchpad.net/ubuntu/+source/git-core/+bug/293553
Ursprüngliche Antwort:
Warum hast du ssl deaktiviert? Ich denke, das hat möglicherweise damit zu tun, dass Sie nicht über https pushen können. Ich würde es zurücksetzen und versuchen, noch einmal zu pushen:
quelle
Stellen Sie sicher, dass Sie (Git-Prozess tatsächlich) Zugriff auf die Datei haben
.git/info/refs
und diese Datei nicht von einem anderen Prozess gesperrt wird.quelle
Ich hatte dieses Problem, als ich versuchte, einen neuen Feature-Zweig zu erstellen, der den Namen des alten Zweigs enthielt, z. B. origin - branch1, und ich wollte branch1-feature erstellen. Es war nicht möglich, aber branch1 / feature war es bereits.
quelle
In meinem Fall musste ich alte Tags, die auf der Fernbedienung entfernt wurden, manuell löschen.
quelle
In meinem Fall war es mit dem Filialnamen verbunden, den ich bereits erstellt hatte.
Um das Problem zu beheben, habe ich einen Zweig mit dem Namen erstellt, der mit Sicherheit nicht existieren sollte, wie:
Dann habe ich alle meine anderen Zweige (nicht aktiv) gelöscht, weil sie nur unnötiger Müll waren.
und benannte dann meinen aktuellen Zweig mit dem Namen um, den ich beabsichtigt hatte, wie:
quelle
Im Fall von bettercodes.org ist die Lösung poetischer - das einzige Problem können die Rechte sein, die den Projektmitgliedern zugewiesen wurden. Einfache Mitglieder haben keine Schreibrechte! Bitte stellen Sie sicher, dass Sie über die Moderator- oder Administratorrechte verfügen. Dies muss natürlich von einem Administrator auf bettercodes.org in den Projekteinstellungen festgelegt werden.
quelle
Ich habe diesen Fehler gesehen, als ich versucht habe
git filter-branch
, viele Unterverzeichnisse in ein neues, separates Repository zu trennen (wie in dieser Antwort) ).Ich habe alle oben genannten Lösungen ausprobiert und keine davon hat funktioniert. Schließlich entschied ich, dass ich meine Tags in der neuen Filiale nicht so schlecht aufbewahren musste und lief einfach:
quelle