2012-04-24 1 views
23

Ich habe ein hypothetisches Mercurial Repository auf CD. Ich mache den größten Teil des Weges durch die Erstellung eines neuen Features, wenn ich feststelle, dass ich die Datei, an der ich gerade arbeite, völlig durcheinander gebracht habe und diese Datei wieder in den letzten Commit-Zustand zurückversetzen möchte.Wie stelle ich eine Datei in Mercurial auf den Status "Letzter Check-in" um?

Ich kann verwenden, um die Arbeitskopie aus dem Repository zu aktualisieren, aber das aktualisiert jede Datei.

Gibt es einen Mercurial-Befehl, der nur eine einzige Datei aktualisieren kann?

Antwort

28

Es gibt einen mercurial-Befehl zum Zurücksetzen von Dateien. hg revert Dies sollte alle Änderungen rückgängig machen. Sie können auch einen Dateinamen an ihn übergeben, z. B. hg revert fileName.

3

Ich glaube, Sie können hg revert /path/to/file/<file name> eingeben und es wird nur diese Datei aktualisieren.

+1

Nö, das ist Git, die dieses seltsame Verhalten für 'git checkout' hat (in Mercurial,' hg Kasse 'ist ein Alias ​​für' hg update'). –

+0

Sie haben Recht, danke, dass Sie mich korrigiert haben. – Kodi

+0

@Vari Ist Ihre Antwort dann falsch? Wenn ja, bitte löschen. –

11

hg revert fileName wird diese Datei wieder auf die aktuelle Version zurücksetzen. Wenn Sie alle Änderungen rückgängig machen möchten, können Sie hg revert --all ausführen.

Beide Dateien werden fileName.orig Dateien erzeugen, so dass Sie die Änderungen behalten können, die Sie nur für den Fall wiederherstellen möchten. Wenn Sie die Datei wiederherstellen möchten und nicht alle haben die .orig Dateien Sie die -C Option hinzufügen: hg revert fileName -C hg revert --all -C

+0

Ich finde es besser, '* .orig' zu meiner' .hgignore' Datei hinzuzufügen und dann einfach die '.orig' Dateien herum zu lassen. Vielleicht werde ich sie eines Tages brauchen :) Wenn sie dich stören, kannst du die Cleans-Erweiterung benutzen, um sie zu säubern. –

Verwandte Themen