Push schafft neue Remote-Köpfe! (Haben Sie vergessen, zusammenzuführen? Verwenden Sie push -f, um zu erzwingen)

73

Ok, ich hatte ein wenig Google und kann keine Lösung finden, da ich auf dieselbe Nachricht gestoßen bin, aber auf unterschiedliche Weise, wie die Leute sie erhalten haben. Ich bin neu in Mecurial und möchte sicherstellen, dass ich das richtig mache.

Ich erhalte also die Fehlermeldung wie oben. Ich habe eine Entwickler-Site und eine Live-Site und ich versuche, den Code in die Codebasis zu verschieben.

Allerdings habe ich gestern versehentlich hg addalle Medien hinzugefügt, die ich nicht machen wollte. Ich habe danach zurückgesetzt, um alle Mediendateien aus der Codebasis zu entfernen, indem ich die Änderungen festgeschrieben und gepusht habe. Also habe ich heute Änderungen an der CSS-Datei und einigen Vorlagen vorgenommen. Ich habe meine Änderungen festgeschrieben und gepusht, aber wenn ich sie ausführe hg push, wird der obige Fehler angezeigt.

Ich habe hg log ausgeführt und es gibt nur 6 Commits, da es sich um einen sauberen / neuen Zweig / ein sauberes Projekt handelt. Jede Hilfe wäre sehr dankbar und ich entschuldige mich, wenn ich nichts richtig erklärt habe!

JDavies
quelle

Antworten:

69

Dies ist keine "Fehlermeldung". Es ist eine ganz normale Situation. Diese Nachricht lautet: "Hey, andere Leute haben neue Arbeiten in dieses Repository verschoben, während Sie Ihre Arbeit erledigt haben. Sie sollten wahrscheinlich ihre in Ihre integrieren, damit sie Ihre nicht in ihre integrieren müssen."

Also mach zuerst ein:

hg pull

und dann a:

hg merge

Übrigens revert, wenn Sie den hg revertBefehl tatsächlich verwendet haben, haben Sie diese Dateien nicht aus dem Verlauf entfernt, sodass Ihr Verlauf wahrscheinlich ziemlich groß ist.

Lesen Sie die ersten Kapitel des Mercurial-Buches , in dem diese Situationen recht gut behandelt werden.

Ry4an Brase
quelle
1
Eine legitime Situation ist, wenn Sie einen Patch erstellen müssen, der auf einer ganz bestimmten älteren Version basiert. Sie können diesen Patch später in Ihrem Hauptentwicklungszweig zusammenführen.
AnthonyVO
19

Wenn Sie Ihre widersprüchlichen Änderungen abbrechen möchten

hg outgoing

Sie sollten Zeilen sehen, die Ihre festgeschriebenen / widersprüchlichen Änderungen enthalten, die nicht übertragen werden. Suchen Sie nach der Änderungssatzrevision. Hier 64

searching for changes
changeset:   64:1830948c246e

Dann

hg strip 64
Woody
quelle
15

Das hat bei mir funktioniert.

hg push -f

Versuchen Sie es mit weiteren Befehlen

hg help push
Christine Tuazon
quelle
13
Das Hinzufügen des "Force" -Flag ist nicht wirklich eine "Lösung", sondern "Erstellt einen neuen Remote-Kopf" ist ein Fehler.
Caius Jard
7
Dies ist eine Lösung , aber nur, wenn Sie wissen, was Sie tun. Wenn Sie beispielsweise einen Zweig schließen und den Zweig neu starten möchten (ohne Zusammenführung, wobei alle Änderungen des geschlossenen Zweigs überschrieben werden, jedoch denselben Namen haben), --forceist dies wahrscheinlich das, was Sie möchten. Der Schlüssel hier ist zu wissen, was Sie tun , sonst nicht verwenden --force(was Ihre Standardeinstellung sein sollte).
Abel
1

Auf TortoiseHg können Sie dies tun:

1 => Übernehmen Sie Ihre Dateien

2 => Mach deinen neuen Zweig, in den du deinen Code pushen willst

3 => Führen Sie in diesem Zweig Merge with Develop aus

4 => Schieben Sie Ihren Code ohne Fehler!

Kamil Naja
quelle
0

Wenn Sie die Änderungen über die Workbench übertragen, können Sie zuerst versuchen, ausgehende Änderungen zu erkennen. Siehe das angehängte Bild

Geben Sie hier die Bildbeschreibung ein

Dies gibt Ihnen Informationen darüber, was Sie pushen werden. Mein Problem war, ich hatte eine alte draftanstehende zu schieben. Ich konnte mit dem Push fortfahren, nachdem ich stripden alten Entwurf bearbeitet hatte.

Akbar Badhusha
quelle
1
Sie können das Repository auch einfach nach filtern draft()(die Revisionen im Entwurfszustand anzeigen). (Dies ist nicht 100% zuverlässig, wenn Sie etwas Besonderes getan haben, wie das Ändern des Revisionsstatus oder das Ziehen / Verschieben in ein anderes Repository, aber unter normalen Umständen wird es funktionieren.)
Mike Rosoft