nicht enthält Also habe ich ein Repository in mercurial wie auf dem Bild unten beschrieben. Ich muss ein neues Commit aber ohne Änderungen, die durch zwei commits getan wurde, erstellen. Benennen Sie diese 2 Commits als "commit 4" und "commit 16". Aber ich kann nicht einfach "die Geschichte umschreiben" und diese Commits löschen.Erstellen Sie ein neues Commit, das einige alte
Antwort
verschmelzenden Die Antwort ist einfach: backout
die Changesets Sie brauchen oder wollen nicht mehr:
hg backout -rXXX
wobei XXX die Revision des Changeset, das Sie sehen möchten, ist weg. Also in Ihrem Fall zuerst Ihre letzte changeset (z. B. 23) auschecken, dann:
und Ihre Aufgabe ist erledigt.
Hier ist, was ich verstehe, was Sie tun möchten:
- Nehmen Sie die oberste (letzte) changeset, lassen Sie uns diese changeset nennen 23
- "Rückgängig" was auch immer changeset 4 und ChangeSet 16 tat im oberen Teil der
Sie Dies gibt:
- Changeset 23 ist nach wie vor intakt, komplett mit allem, was changeset 4 und 16 hat
- Ihr neuer changeset (n) wie 23 sein würde, es sei denn, ohne was changeset 4 und 16 tat
Hier ist, wie dies zu tun , hier ist die Geschichte vor den Operationen:
23
|
...
|
16
|
...
|
4
|
...
- Update auf die oberste changeset
- eine backout changeset erstellen für changeset 4 und verpflichten sie, begangen wird diese auf der changeset 23
- ein backount changeset für changeset Erstellen 16 und verpflichten sie, wird dies auf der changeset 24
Ihre Geschichte sollte jetzt verpflichtet werden, aussehen wie folgt aus:
25 (-16)
|
24 (-4)
|
23
|
...
|
16
|
...
|
4
|
...
Beachten Sie, dass:
- Changeset 23 enthält noch changeset 4 und 16
- Änderungssatz 25 enthält Änderungssatz 23, aber die Änderungen von 4 und 16 wurden umgekehrt (rückgängig gemacht)
- Wenn Änderungen in 5 und höher auf Änderungen basieren, die in Änderungssatz 4 eingeführt wurden, und/oder Änderungen in 17 und höher auf Änderungen basieren in changeset 16, erhalten Sie Konflikte zusammenführen, müssen Sie diese behandeln, wenn
Danke für die Antwort. Ich werde es versuchen und Sie wissen lassen, ob es funktioniert. –
Es funktioniert! Danke vielmals! –
Während die Antwort funktioniert, ist es IMHO viel zu kompliziert. Warum zuerst auf die Changesets updaten? Sie können einfach zu changeset 23 updaten und dann die unerwünschten changesets direkt rückgängig machen, ohne merge zu müssen. – planetmaker
- 1. Erstellen Sie ein neues Array
- 2. Git Zweig diff in ein neues Commit
- 3. Erstellen eines Objekts löscht das alte?
- 4. Ändern Sie alte Commit-Nachricht auf Git
- 5. So erstellen Sie ein neues RealmObject, das eine RealmList enthält
- 6. Erstellen Sie ein Commit mit pygit2
- 7. Wie Sie weiterhin eine alte Version in Subversion arbeiten aus, wenn Sie ein neues Zweig
- 8. LINQ: Wählen Sie ein Objekt, aber einige Eigenschaften ändern, ohne ein neues Objekt erstellen
- 9. Erstellen Sie ein neues Fenster mit NSWindow
- 10. Erstellen Sie ein neues Dropdown mit Javascript
- 11. Wird -replaceObjectAtIndex: withObject: of NSMutableArray das alte Objekt freigeben, das durch ein neues ersetzt wurde?
- 12. Github: Fork oder ein neues Repository erstellen?
- 13. Erfassen Sie Pixel und erstellen Sie ein neues Bild
- 14. Wie man ein neues Formular öffnet, aber das alte in VB schließt
- 15. So fügen Sie ein neues Element in das Systemmenü ein
- 16. Wie kann ich ein neues PSDrive erstellen, indem Sie ein Passwort verwenden, das SystemSecuredString nicht wahr?
- 17. Erstellen Sie ein neues Image im Dateisystem von System.Drawing.Image?
- 18. Wie kann ich die Versionen bestimmter Dateien in Subversion ändern und ein neues Commit erstellen?
- 19. Wie erstellen Sie ein neues Array in VB.NET?
- 20. Erstellen Sie ein neues Array aus Schlüsselliste in PHP
- 21. Erstellen Sie ein neues RGB-OpenCV-Bild mit Python?
- 22. Erstellen Sie ein neues Top-Level-Menü in Visual Studio
- 23. caching das alte Bild
- 24. Erstellen Sie ein neues PropertyInfo-Objekt im laufenden Betrieb
- 25. Karaf Bundle Kommissionierung einige alte Abhängigkeit up
- 26. Erstellen Sie ein neues PHP-Objekt in einer vorhandenen Klasse
- 27. Erstellen Sie ein neues Div dynamisch in WordPress
- 28. Erstellen Sie ein neues List-Objekt in Python
- 29. XQuery: Erstellen Sie ein neues Element mit einem bestimmten Namen?
- 30. So erstellen Sie ein neues Thema in Drupal 7
Meinen Sie, Sie möchten diese Änderungen rückgängig machen oder diese Änderungen "rückgängig machen", was bedeutet, dass Sie sie rückgängig machen möchten, Änderungen vornehmen, die die Änderungen effektiv entfernen, die diese Änderungssets eingeführt haben? Mit anderen Worten, wenn Changeset 4 etwas hinzugefügt hat und Changeset 16 etwas geändert hat, möchten Sie, dass Ihr neues Changeset die hinzugefügten 4 entfernt und wieder so ändert, wie es vor dem Commit von Changeset 16 war. –
Ja, neue changeset sollte entfernen, das in 4 war und ändern zurück, die bei 16 war. –
Aber anders als das sollte es alles enthalten, das in der Top-Changeset ist, lasst es Label Changeset 23, habe ich es dann richtig verstanden? –