Wie

2012-08-25 14 views
14

einen „öffentlichen“ changeset in Mercurial ändern würde Ich mag mein letzten begehen ändern, aberWie

hg commit --amend 

gibt mir

abort: cannot amend public changesets 

obwohl ich weiß, dass es sicher ist, zu bearbeiten laufe das Änderungsset. Wie kann ich die Phase meines letzten Commits ändern und/oder Mercurial mitteilen, dass es sicher ist, es zu ändern?

Antwort

27

Auf dem Mercurial-Wiki gibt es eine gute overview of phases.

Um die aktuelle commit von „öffentlich“ zu „Entwurf“ begehen, um konvertieren zur Änderung zu ermöglichen, verwenden

hg phase --draft --force . 

(oder ersetzen . mit einer anderen Version, wenn Sie eine andere changeset bearbeiten möchten).

+0

Das Drücken der Upstream-Taste führt immer zu zwei Commit-Vorgängen, und das lokale 'HG-Logbuch' bestätigt ebenfalls zwei Commits - gibt es einen Weg dazu? Es zeigt also nur das geänderte Commit? –

+4

Nein, wenn Sie den Änderungssatz verschoben haben, sollten Sie ihn nicht ändern, weshalb hg dies verhindert. (In einigen Fällen wissen Sie, dass es nur zu einem anderen privaten Repo von Ihnen geschoben wurde. In diesem Fall ist diese Antwort nützlich.) –

+1

@Daniel Sokolowski, Sie hätten den Push des ersten Commit mit Rückgängig/Rollback auf dem entfernen können Upstream-Repo. Aber Sie müssen schnell sein und dies tun, bevor weitere Änderungssätze dazu geschoben werden. –