Source

hgtip-content_zh / beginner / 2009-10-05-shortcuts-for-specifying-revisions.html

{% extends "_tip.html" %}
{%hyde
    title: Shortcuts für spezifische Revisionen
    author_name: Steve Losh
    author_link: http://stevelosh.com/
    created: 2009-10-05
%}


{% block excerpt %}
Sie müssen nicht immer eine Versionsnummer angeben -- Mercurial hat einige 
Tricks die ihnen helfen können.
{% endblock %}


{% block tip %}

Etliche Befehle von Mercurial ermöglichen ihnen die Angabe einer bestimmten 
Version die behandelt werden soll. Als Beispiel: `hg update REV` wird die 
Arbeitsversion auf die Version `REV` aktualisieren und `hg diff -c REV`
wird die Änderungen der Version `REV` anzeigen.

Die am hÄufigsten verwendete Möglichkeit um Mercurial die gewünschte Revision 
mitzuteilen ist die Verwendung der lokalen Revisionsnummer. Als Beispiel:
`hg update 30` wird die Arbeitsversion auf Revision `30` aktualisieren.

Dies ist gut wenn Sie die gewünschte Revisionsnummer kennen (oder mittels 
`hg log` nachschauen wollen). Aber Mercurial bietet noch einige Abkürzungen
die dies einfacher machen.

### Hashes

Die Revisionsnummer die Sie meistens verwenden sind nur innerhalb ihres 
Repository eindeutig. Normalerweise ist dies kein Problem. Aber wenn man mit
jemand anderem über eine Revision sprechen will, sollten Sie den **eindeutigen 
Hash** verwenden.

Mit `hg log` können Sie den Hash der Revision nachschlagen -- dieser wird direkt
neben der Revisionsnummer angezeigt. Ein Beispiel:

    $ hg log -r 30
    changeset:   30:f7744f53cf93
    ...

In diesem Fall ist `f7744f53cf93` der Hash den Sie verwenden sollten um mit 
anderen Leuten über eine Änderung sprechen wollen.

### Tags

Sie können überall wo sie eine Revisionsnummer nutzen auch den Namen eines Tag 
verwenden. Wenn Sie einen Tag mit dem Namen `1.0` haben der auf Revision `30` 
zeigt, bewirkt `hg update 1.0` das gleiche wie `hg update 30`.

### Benannte Verzweigungen nutzen

Wenn Sie benannte Verzweigungen (sogenannte Branches die Sie mittels `hg branch 
branchname` erzeugen können) nutzen, kann deren Name als Versionsbezeichnung 
verwendet werden. Dies ist die Kurzform für "aktualisiere auf die letzte 
Version in der Verzweigung branchname".

Dies kann sehr hilfreich sein wenn Sie hÄufig zwischen Verzweigungen hin und
her wechseln müssen:

    $ hg update feature-branch
    ... Sie arbeiten an neuer Funktion ...
    $ hg commit -m 'Add part of the new feature.'
    $ hg update default
    ... Beheben eines kritischen Fehlers auf dem Hauptentwicklungszweig ...
    $ hg commit -m 'Fix the bug that set the servers on fire.'
    $ hg update feature-branch
    ... Zurück zur Arbeit an der neuen Funktion ...

Dies ist auch hilfreich wenn Sie mergen wollen. Denken Sie daran, dass 
`hg merge` auch eine spezifische Revision mit der aktuellen Revision 
zusammengeführt werden können:

    $ hg update default
    $ hg merge --rev feature-branch
    $ hg commit -m 'Merge in the new feature.'

### Die aktuellen Eltern

Einer der undurchsichtigeren Tricks zur Angabe einer Revision ist die 
Verwendung von `.` um zu sagen "gib mir die Eltern der aktuellen Arbeitskopie":

    $ hg commit -m 'Finish up some changes.'
    $ hg log --change .
    ... zeige die Änderung bei der gerade eingecheckten Revision ...
    $ hg diff --rev 12:.
    ... zeige die Änderungen zwischen Revision 12 und der gerade eingecheckten 
	Revision ...
    $ hg update -C .
    ... verwerfe alle Änderungen die nicht eingecheckt wurden bleibe dabei aber
	auf der aktuellen Revision ...
	
### Die VorgÄnger von Tip

Wenn Sie eine negative Nummer als Revision verwenden, bedeutet dies "X 
Revisionen vom aktuellen Tip des Repository zurück". `-1` meint Tip selber, 
`-2` bedeutet die Elternversion von Tip und so weiter.

Dies wird ein wenig heikel sobald Verzweigungen im Spiel sind. So lange Sie 
aber nur einige Versionen zurück wollen ist es sehr nützlich.

### Andere Tricks

Es gibt mehrere Wege um eine Revision zu spezifizieren. Mittels `hg help 
revisions` können Sie mehr erfahren.

Wenn Sie ein Git Benutzer sind der Mercurial ausprobiert und den Syntax  
`revision^` vermissen, schauen Sie sich [parentrevspec Erweiterung][prse] an.
Diese erweitert Mercurial um den entsprechenden Syntax zur Angabe einer 
Revision.

[prse]: http://mercurial.selenic.com/wiki/ParentrevspecExtension

{% endblock %}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.