Ich ausgestellt hg qnew
ohne zu erkennen, dass es alle ausstehenden Änderungen in den Patch enthält. Ich würde das gerne wiederholen und nur bestimmte Änderungen mit hg qrecord
auswählen. Wie kann ich qnew
rückgängig machen?Wie rückgängig machen "hg qnew"?
Antwort
Ihre Antwort auf jeden Fall funktioniert - mit neuerem Mercurial Sie hg strip --keep
verwenden können, tun den Importschritt zu vermeiden:
$ hg strip --keep .
$ hg qdelete patch-name
Das Flag --keep
lässt Streifen die Arbeitskopie während der Arbeit ignorieren, dh es löscht die Festschreibung (wie hg qpop
würde tun), aber es macht die Änderungen an den Dateien nicht rückgängig . Nach dem Entfernen haben Sie immer noch den Patch in Ihrer Serie (nicht angewendet) und Sie können ihn dann löschen.
Ich habe eine anwer here gefunden:
hg qpop
hg import --no-commit .hg/patches/patch-name
hg qdelete patch-name
Bitte fügen Sie eine bessere Art und Weise, wenn Sie wissen.
Update: Basierend auf Aldo Antwort gibt es eine andere Art und Weise:
hg qnew test
# We can undo the above qnew as:
hg qrefresh -X '*'
hg qpop -f
hg qdelete test
Wenn Sie nur die neuesten qnew
Beibehaltung aller lokalen Änderungen rückgängig machen wollen, eine Option ist:
qcrefresh 123
hg qpop -f
hg qdelete <name of the patch>
Beachten Sie, dass 123
nur eine zufällige Zeichenfolge ist: Sie sagen nur Mercurial umfassen die (hoffentlich nonexistsnt) 123
Datei im aktuellen Patch. Neuere Versionen von Mercurial Wenn Sie ein Problem melden, wird eine Warnung ausgegeben, dass die Datei 123
nicht existiert, aber genau das wollen wir hier.
Wenn Sie einige der Änderungen im aktuellen Pfad beibehalten möchten, können Sie den Befehl qcrefresh
von crecordextension verwenden, mit dem Sie die Änderungen grafisch auswählen können, die im aktuellen Patch enthalten sein sollen. Sie müssen es von Bitbucket download, das Archiv extrahieren und konfigurieren Sie es in .hgrc
:
[extensions]
crecord = <path/to/crecord/package>
- 1. Wie rückgängig machen `hg pull`?
- 2. Wie rückgängig machen hg init?
- 3. Eine HG-Push (Backout?) Rückgängig machen
- 4. Was ist der Unterschied zwischen hg und hg rückgängig machen?
- 5. Mercurial: Wie rückgängig machen letzten ungespeicherten Commit?
- 6. Wie rückgängig machen npm update?
- 7. Wie Teer-Operation rückgängig machen?
- 8. Wie rückgängig machen bzr hinzufügen
- 9. Vim rückgängig machen: Änderungen nach dem Schreiben rückgängig machen
- 10. iCheck rückgängig machen überprüfen
- 11. Git Clean rückgängig machen
- 12. .NET RichTextBox rückgängig machen
- 13. In Auswahl rückgängig machen?
- 14. Wie Sie alle hinzugefügten Dateien in Mercurial rückgängig machen
- 15. Verzweigungserstellung in Mercurial rückgängig machen
- 16. In WPF-Bindungen rückgängig machen
- 17. Wie ohne Transaktion rückgängig zu machen
- 18. Wie rückgängig machen Git Ablauf Feature Finish?
- 19. Wie rückgängig machen einer Zusammenführung auf Bitbucket?
- 20. Wie implementiert man Funktionalität rückgängig machen?
- 21. wie git add rückgängig zu machen, bevor
- 22. Wie rückgängig machen git stash löschen
- 23. Wie rückgängig machen auf ausgewählten Commit
- 24. Wie rückgängig machen Sie "surroundContents" in Javascript?
- 25. Wie rückgängig machen Funktionalität zu HTML5 Canvas?
- 26. Wie "rückgängig machen" Übersetzungsfunktion in jQuery
- 27. Wie rückgängig machen Sie die letzte Checkbox?
- 28. Wie rückgängig machen> 1 in Squeak
- 29. jQuery AJAX "Hilfsprogramm rückgängig machen"
- 30. Emacs: Bereinigen rückgängig machen-Baum
Diese Erweiterung sehr vielversprechend scheint, und als darcs Benutzer möchte ich auf diese Weise Änderungen interaktiv auszuwählen. Allerdings beantwortet es meine Frage nicht - ich musste "qnew" rückgängig machen, was schon passiert ist. –
Wenn ich Ihre Frage gut verstehe, müssen Sie das 'qnew' nicht wirklich rückgängig machen: Sie können den' qcrefresh' Befehl direkt verwenden, um die Änderungen auszuschließen, die nicht enthalten sein sollten. Die ausgeschlossenen Änderungen bleiben als lokale Änderungen erhalten. Nach "qcrefresh" können Sie sie alle in einen neuen Patch mit 'qnew' einfügen oder sogar' qcrecord' verwenden, um nur eine Teilmenge davon auszuwählen. – Aldo
Vielleicht verstehe ich einfach nicht, wie man die Erweiterung richtig benutzt. Könnten Sie bitte eine Reihe von Befehlen hinzufügen, die mit 'hg qnew' in einem modifizierten Repository beginnen, das endet, als ob' qnew' nie aufgerufen wurde? Ich habe versucht, dies mit 'qrefresh' vorher (was ich denke, macht das gleiche wie' qcrefresh', nur nicht interaktiv), aber ohne Erfolg. –