Wie force push mit einem reset-remote-repository?
Den entfernten master-branch irgendwie Durcheinander. Aktuelle Entwicklung-code wird auf dem master-branch zusammen mit der neuesten verpflichtet. Offensichtlich ist die Entwicklung von code ist nicht bereit für den master-Zweig.
Also auf meinem lokalen repository, ich habe einen reset auf die neueste tag, git reset --hard (Tag)
. Der master-branch ist nun korrekt, auf meinem lokalen repository. Wenn ich jetzt versuchen, push die änderungen auf das remote-repository, git push origin master
bekomme ich einen Fehler:
To (REMOTE GIT REPOSITORY LOCATION)
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
So, nach etwas recherche fand ich heraus, das --force
option. Also, ich habe einen force push auf das remote-repository, git push --force origin master
, und ich habe noch einen Fehler:
Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To (REMOTE GIT REPOSITORY LOCATION)
! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)'
Kann ich nicht ziehen Sie auf master, denn es enthält-Entwicklung code der nicht auf master.
Sie waren korrekt, danke. In der config-Datei für das repository auf dem remote
denyNonFastforwards = true
. Ich habe es auf false, schob meinen änderungen und dann haben es wieder auf true. Vielen Dank nochmal allen, für die Hilfe.bitte markieren Sie svick ist die Antwort so akzeptiert
hast svick Antwort für Sie arbeiten oder nicht?
Für diejenigen, die brauchen Informationen, wie zu deaktivieren denyNonFastForwards wie samwell haben, weitere Anleitungen können hier gefunden werden: stackoverflow.com/a/43721579/2073804
InformationsquelleAutor samwell | 2012-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Meldung bedeutet, dass Sie sind nicht erlaubt zu tun, non-fast-forward push.
Ihre remote-repository hat wahrscheinlich
denyNonFastforwards = true
in seiner config. Wenn Sie das ändern,git push --force
funktionieren sollte.Um die Einstellung zu ändern, benötigen Sie Zugriff auf die Maschine mit dem remote repository. Von dort aus machen
git config receive.denynonfastforwards false
.git config
für einen server? Oder vielleicht waren Sie mit diesem metaphorisch. Spielen mit diesen Ideen, die ich erstellt ein test-repo in/opt/git
(meine git-server-Raum) und dann modifizierte ich diese Einstellung in/opt/git/the_repo/the_repo.git/config
. Aber einmal erledigt dasgit push --force origin SHA:branch
arbeitete als erforderlich.Die Fehlermeldung über die Zeile, die beginnt mit "error: failed to push einige refs zu <Ihre repository - >" <Ihre repository - > ist der Pfad endet .git ist ein Verzeichnis, eine Datei namens "config". Diese "config" - Datei ist, wo Sie festlegen können, denyNonFastforwards = false
aber wenn jemand nicht auf den server zugreifen?
Kommentar ist wertvoll. Manchmal sind die Ordner auf dem server haben, seine Herkunft zu sowas wie /srv/git/repo.git. Das ist die config, die hat denyNonFastForwards-set, nicht den Ordner der Anwendung.
Wenn Sie nicht über Zugriff auf den server, dann müssen Sie mit dem server admin und haben Sie Sie vorübergehend ausschalten, so können Sie Kraft, Stoß, und schalten Sie ihn dann wieder auf. Es ist unwahrscheinlich, dass die meisten in der Lage sind, dies zu tun wenn. Es kann sein, mehr Häufig in einer internen Umgebung mit Ihrem eigenen hosting-team.
InformationsquelleAutor
Die Fernbedienung nicht zulassen, die nicht schnell vor.
Ihre beste option ist, um
git revert
alle commits, die nicht da sein sollte und vorsichtiger sein in Zukunft.git revert [commit]
erzeugt einen neuen commit, der macht, was[commit]
haben.Wenn Sie dies tun und müssen erneut begeht, die Geschichte ist nicht entfernt in einem wiederherstellen nur der code ändert, und Sie werden nicht in der Lage, cherry-pick oder merge-commits
InformationsquelleAutor richo
Schritte, um dauerhaft zu aktivieren force push in der folgenden style -
Bearbeiten Sie die Datei namens "config" im Ordner mit der Endung ".git" auf dem remote-repository
In der git-command-line-Ausgang des fehlerhaften push, suchen Sie nach der Zeile, die sagt so etwas wie:
dann
Set "denyNonFastforwards" false"
In "config" setzen
Jetzt drücken Sie können von Ihrem lokalen Rechner mit -f
Vielleicht die git-revert-Befehl, wie richo schlägt? Wenn Sie sichern den aktuellen Stand der repo den ersten, können Sie immer noch verbinden Sie Ihre code in Bewegung.
git revert
ist kompliziert, wenn man fusioniert. Komplizierter meinem Fall hat Zusammenführen 3, von denen eine mit sehr alten ~20 commit trennten entwickeln, 2. Art der Zusammenführung von master - hässlich wie die Hölle.Vielleicht ist die Lösung das zurücksetzen auf gewünschten Zustand, backup (stash), ziehen Sie erneut, und wenden Sie backup (stash).
mrW Sie können immer noch Zusammenführen der code-Basis, die Sie möchten, auf der Spitze eines rückgängig gemacht/gezogen-code-Basis
InformationsquelleAutor emery
Versuchen, mit den
-f
- flag und setzen es nach dem remote-branch name.git push origin master -f
git push -f origin master
- und gleiche Ergebnis. Beide Male, die ich es versuchte, ich bekam die zweite version der Fehlermeldung.InformationsquelleAutor Chris Ledet
Du bist nicht erlaubt zu tun, git push, der nicht schnell vorwärts.
Wenn die Fernbedienung GitHub, gehen Sie zu
https://github.com/$USER/$REPO/settings/branches
- und un-Schutz der Branche in Frage.Haben Sie der admin von der repo zu tun.
Wenn die Fernbedienung Ihres eigenen git-server laufen
git config receive.denynonfastforwards false
es.InformationsquelleAutor filiph
Der beste Weg, um dieses ist das löschen der remote-Zweigstelle und erneut senden:
InformationsquelleAutor Danilo Souza Morães
Tritt das problem auf, wie der aktuelle Zweig ist nicht richtig konfiguriert für die ZIEHEN.
Überprüfen Sie zuerst, ob die upstream-branch ist richtig konfiguriert für das ziehen mit -
git remote show origin
. Sie finden es unter der Rubrik - Lokale Zweige konfiguriert für 'git pull':. Wenn nicht, konfigurieren Sie es mit:Geben, entsprechenden Zweig Namen für die Platzhalter - MYBRANCH
InformationsquelleAutor Sudheesh.M.S
Ich bin mit dieser Gruppe von Befehlen zurücksetzen meine remote-repo, dies wird re-initialisieren Sie Ihre lokale repo und verknüpfen Sie mit dem remote-repo erzwingen Sie dann die drücken Sie die updates.
Ich denke, dass dieser Weg nicht funktioniert, in Ihrem Fall, kann aber nützlich sein für jemand anderen
gehen Sie in den source Ordner dann ausführen der Befehle :
beachten Sie, dass
https://github.com/*.git
ist Ihr remote-repo-link**Note: this will clear all your git history on your master branch**
InformationsquelleAutor Shqear
Für mich, @svick 's Tipp schon in die richtige Richtung. Seit der git-server, die ich ändern wollte ist eigentlich meine box, die ich angemeldet und habe eine
git config --global receive.denynonfastforwards false
zu ändern, alle repos zu akzeptieren gezwungen, nicht-ff zu schieben. Hat nicht funktioniert out of the box. Was ich fand, war, dass in der config war es bereitsreceive.denynonfastforwards=true
gesetzt, und es konnte nicht gelöscht werden mitgit config --global --unset receive.denynonfastforwards
.Tun Sie das Bearbeiten in die repo manuell (
vi config
) gearbeitet, obwohl.InformationsquelleAutor jglathe