Push-Änderungen ohne Pull

Lesezeit: 3 Minuten

Ich versuche, einige Änderungen rückgängig zu machen, die bereits in ein Remote-Repository verschoben wurden, und ich habe dies lokal mit getan

git reset --hard COMMIT-HASH

Aber jetzt lässt es mich nicht schieben, ohne vorher zu ziehen, was natürlich dem Zweck zuwiderläuft. Ich habe es versucht:

git push -f

Welche Fehler raus mit:

Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To [email protected]:/yyy.git
 ! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:/yyy.git'

Wie bekomme ich also meine neue, korrekte Version des Branchs an die Fernbedienung?

  • Tut Dies dir helfen?

    – Hassan

    6. August ’12 um 14:15

  • @Hassan – Entschuldigung, nein. Ich habe die Commits, die ich nicht möchte, bereits zurückgesetzt. Das Problem besteht nun darin, dass dies erfolgreich an die Fernbedienung übertragen wird.

    – Wille

    6. August ’12 um 14:16

  • Wenn Sie die Commits auf dem Git-Server bereits zurückgesetzt haben, warum können Sie dann nicht ziehen?

    – ungültiger Satzbau

    6. August ’12 um 14:19

  • mögliches Duplikat von Git reset –hard und ein Remote-Repository

    – Tripleee

    6. August ’12 um 16:16

Push Anderungen ohne Pull
vergent

Von dem git config man-Seite:

receive.denyNonFastForwards

Wenn es auf true gesetzt ist, verweigert git-receive-pack ein Ref-Update, das kein schneller Vorlauf ist. Verwenden Sie dies, um ein solches Update über einen Push zu verhindern, selbst wenn dieser Push erzwungen wird. Diese Konfigurationsvariable wird beim Initialisieren eines gemeinsam genutzten Repositorys festgelegt.

Auf dem Server, auf den Sie Push übertragen möchten, ist diese Einstellung aktiviert. Also, kurze Antwort, ist, dass Sie in diesem Fall nicht in der Lage sein werden, git push --force.


Um die richtige Version des Zweigs an die entfernte Stelle zu übertragen, müssen Sie einen neuen Commit an der Spitze des Zweigs durchführen, der ihn in den richtigen Zustand bringt. Wenn Sie sich gerade beim Commit für den richtigen Status befinden, können Sie Folgendes ausführen:

$ git reset --soft <remote>/<branch>    # point the ref back to the remote, but
                                        #   keep the index and working tree

$ git commit                            # make the 'correction' commit
$ git push

Verbietet Ihr Server nicht-Fast-Forward-Push?

Git-Konfigurationsdatei

[receive]
denyNonFastforwards = true

  • Es scheint standardmäßig deaktiviert zu sein, mit einer Warnung: “Wir empfehlen nicht, diese Einstellungen zu ändern, es sei denn, Sie wissen, was Sie tun. Beanstalk bietet vernünftige Standardeinstellungen, die für die meisten Benutzer sofort funktionieren.” … obwohl das Aktivieren und Forcen Pushen das Problem löst

    – Wille

    6. August ’12 um 14:19


  • Erzwingen Sie das Pushen in anderen Branches als master, wenn Sie Topic-Branches verwenden. Das Zusammenführen von zwei Verzweigungen kann zu Codeverlusten führen, da nur Spitzen von gegebenen Verzweigungen verglichen werden. Das Rebasing durchforstet alle Commits seit dem neuesten gemeinsamen Vorfahren und liefert bessere Ergebnisse, erfordert aber das Umschreiben von Commits, die nicht durch Fast-Forwards gehandhabt werden können. Git-Anfänger wissen nicht, was Rebasing ist, daher ist diese Option gut für sie.

    – skalee

    21. März ’13 um 13:24

Der beste Weg, um Änderungen in git rückgängig zu machen, ist die Verwendung von git revert Befehl.

So machen Sie Ihren letzten Commit rückgängig:
git revert HEAD^

es macht Änderungen, die im letzten Commit vorgenommen wurden, rückgängig und erstellt dann darüber ein neues Commit.

Hoffe es hilft jemandem..

.

186660cookie-checkPush-Änderungen ohne Pull

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy