Frage Wie erzwinge Push-Reset auf Remote-Repository?


Unser Remote-Master-Zweig wurde irgendwie durcheinander gebracht. Der aktuelle Entwicklungscode befindet sich zusammen mit den letzten Commits auf dem Master-Zweig. Offensichtlich ist der Entwicklungscode nicht für den Master-Zweig bereit.

In meinem lokalen Repository habe ich einen Reset auf das neueste Tag vorgenommen, git reset --hard (Tag). Der Master-Zweig ist jetzt in meinem lokalen Repository korrekt. Wenn ich jetzt versuche, die Änderungen an das Remote-Repository zu übertragen, git push origin masterIch erhalte 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.

Nachdem ich mich also umgesehen habe, habe ich das herausgefunden --force Möglichkeit. Also habe ich einen Kraftschub an das Remote-Repository gemacht, git push --force origin masterund ich habe immer 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)'

Ich kann einen Master nicht ziehen, weil er Entwicklungscode enthält, der nicht Master sein kann.


75
2018-05-11 01:09


Ursprung


Antworten:


Die Nachricht bedeutet, dass Sie keine Push-Funktion ohne Schnellvorlauf ausführen dürfen.

Ihr Remote-Repository ist höchstwahrscheinlich denyNonFastforwards = true in seiner Konfiguration. Wenn Sie das ändern, git push --force sollte arbeiten.

Um die Einstellung zu ändern, benötigen Sie Zugriff auf den Rechner mit dem Remote-Repository. Von dort aus git config receive.denynonfastforwards false.


119
2018-05-11 01:29



Die Fernbedienung erlaubt keine Non-Fast-Forwards.

Ihre beste Option ist es git revert all die Commits, die nicht da sein sollten und in Zukunft vorsichtiger sein sollten.

git revert [commit] erstellt ein neues Commit, das alles rückgängig macht [commit] hat getan.


14
2018-03-25 20:31



Schritte zum permanenten Aktivieren von Force Push im folgenden Stil

git push -f myrepo my-branch

Bearbeiten Sie die Datei "config" in dem Ordner mit der Endung ".git" in Ihrem Remote-Repository

Suchen Sie in der Befehlszeile von git nach dem fehlgeschlagenen Push nach der Zeile, die etwa lautet:

error: failed to push some refs to 'ssh://user@some-remote-server.mycompany.com/srv/git/myrepo.git

dann

ssh user@some-remote-server.mycompany.com
cd /srv/git/myrepo.git
vi config

Setzen Sie "denyNonFastforwards" auf false

In "config" einstellen

[receive]
        denyNonFastforwards = false

Jetzt können Sie von Ihrem lokalen Rechner mit -f drücken

git push -f myrepo my-branch

10
2018-05-11 01:12



Versuchen Sie es mit dem -f markieren und nach dem Namen der entfernten Filiale setzen.

git push origin master -f


9
2017-10-25 13:14



Du darfst nicht git push machen, das ist kein Schnellvorlauf.

  1. Wenn die Fernbedienung GitHub ist, gehen Sie zu https://github.com/$USER/$REPO/settings/branches und entsperren Sie die betreffende Zweigstelle.

    enter image description here

    Sie müssen Admin des Repo sein, um das zu tun.

  2. Wenn die Fernbedienung Ihr eigener Git-Server ist, führen Sie sie aus git config receive.denynonfastforwards false Dort.


2
2018-03-03 10:55



Das Problem tritt auf, wenn der aktuelle Zweig für das Verzeichnis nicht ordnungsgemäß konfiguriert ist ZIEHEN. Überprüfen Sie zunächst, ob der Upstream-Zweig für den Pull-Zugriff richtig konfiguriert ist. git remote show origin. Sie können es unter dem Abschnitt finden - Lokale Zweige, die für 'git pull' konfiguriert sind:. Wenn nicht, konfigurieren Sie es mit:

git config branch.MYBRANCH.merge refs/heads/MYBRANCH

Geben Sie den entsprechenden Zweignamen für den Platzhalter an. MYBRANCH


0
2018-04-16 15:51



Ich benutze diese Gruppe von Befehlen, um meinen Remote-Repo zurückzusetzen, dies wird Ihren lokalen Repo neu initialisieren und mit Ihrem Remote-Repo neu verbinden und dann die Updates drücken.

Ich denke, dass dieser Weg in deinem Fall nicht funktionieren wird, aber für jemand anderen nützlich sein kann

Gehe in den Quellordner und führe die Befehle aus: beachten Sie, dass https://github.com/*.git ist Ihre Remote-Repo-Verbindung

git init
git remote add origin https://github.com/*.git
git add .
git commit -m "initial commit"
git push origin master -f
git push --set-upstream origin master

**Note: this will clear all your git history on your master branch**


0