Ich bin neu bei Mercurial. Kann einfach nicht den richtigen Befehl finden. Versuchtes Update / Checkout ohne Glück. Ich verwende das lokale Repository. Vielen Dank
Ich bin neu bei Mercurial. Kann einfach nicht den richtigen Befehl finden. Versuchtes Update / Checkout ohne Glück. Ich verwende das lokale Repository. Vielen Dank
Antworten:
Ich denke, Sie möchten hg revert -r<rev> <file>
(dies ändert die Datei so, wie sie bei der angegebenen Revision war).
Wie DJC sagte, revert
ändert sich eine Datei an Ort und Stelle, um einer vorherigen Revision zu entsprechen. Wenn Sie möchten, dass es nicht vorhanden ist, können Sie es verwenden hg cat -r revisionid filename
(natürlich durch Ersetzen von Revisions-ID und Dateiname), um die Datei an stdout auszugeben, das zum Umleiten an einen beliebigen Ort geeignet ist.
hg revert
löst in der Tat dieses Problem. Aber ich denke, Sie sind verwirrt über ein breiteres Spektrum von Dingen als nur die Antwort auf Ihre Frage und möchten versuchen, eine umfassendere Antwort zu geben.
hg update
ist ein vollständiger Repository-Befehl und funktioniert nicht mit einzelnen Dateien. Es ist anders als die Subversion svn update
auf diese Weise. Wenn Sie dies tun hg --help update
, können Sie sehen, dass dies der Fall ist, da der Befehl kein Dateiargument akzeptiert. Es kann verwendet werden, um Ihr gesamtes Repository in einen bestimmten Snapshot zu verschieben, kann jedoch nicht verwendet werden, um dies auf nur eine Datei zu übertragen.
Wenn Sie tippen hg --help
eingeben, wird eine Liste der Befehle angezeigt. Es ist eine ziemlich große und etwas entmutigende Liste, aber wenn Sie sie durchlesen, finden Sie diese Zeile:
revert restore individual files or directories to an earlier state
Wenn Sie nur den letzten Status zu Vergleichszwecken verwenden möchten, gibt es einen anderen Befehl, an dem Sie interessiert sein könnten, und das ist hg cat
. Auf diese Weise können Sie den Inhalt einer Datei bei einer bestimmten Revision ausdrucken. Sie können dann die Ausgabe in eine andere Datei umleiten. Dann können Sie die zuvor bekannte gute Version Ihrer Datei und die alte Version nebeneinander vergleichen.
Der Grund, warum Mercurial einen separaten update
Befehl hat, ist, dass es möglich ist, in Mercurial etwas zu tun, was in Subversion unmöglich ist. Sie könnenupdate
zu einer früheren Version wechseln, Änderungen vornehmen und dann festschreiben. Dadurch wird eine Verzweigung erstellt. Der update
Befehl bewirkt auch, dass die übergeordnete Version des aktuellen Arbeitsverzeichnisses sowie der Inhalt aller Dateien in diesem Verzeichnis in die Versionen dieser übergeordneten Version geändert wird.
Das bedeutet revert
, dass der Inhalt einer Datei (oder sogar des gesamten Repositorys, wenn Sie dem Befehl die richtigen Argumente geben) geändert wird, die übergeordnete Version der aktuellen Arbeitskopie jedoch unverändert bleibt.
Sie können die übergeordnete Revision (oder Revisionen im Falle einer Zusammenführung) der aktuellen Arbeitskopie mithilfe von ermitteln hg parents
Befehl .
In Subversion sind Revisionen ein streng linearer Verlauf. Mercurial erstellt im Handumdrehen Zweige und lässt sich fast genauso einfach zusammenführen. Revisionen bilden eine DAG, keine streng lineare Progression.
So extrahieren Sie eine bestimmte Version einer bestimmten Datei unter Windows:
hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
Hier ist 9 die Revisionsnummer.
Oder noch besser:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"