hg graft [OPTION]... [-r REV]... REV...

copy changes from other branches onto the current branch

This command uses Mercurial's merge logic to copy individual changes from other branches without merging branches in the history graph. This is sometimes known as 'backporting' or 'cherry-picking'. By default, graft will copy user, date, and description from the source changesets.

Changesets that are ancestors of the current revision, that have already been grafted, or that are merges will be skipped.

If --log is specified, log messages will have a comment appended of the form:

(grafted from CHANGESETHASH)

If --force is specified, revisions will be grafted even if they are already ancestors of, or have been grafted to, the destination. This is useful when the revisions have since been backed out.

If a graft merge results in conflicts, the graft process is interrupted so that the current merge can be manually resolved. Once all conflicts are addressed, the graft process can be continued with the -c/--continue option.

The -c/--continue option reapplies all the earlier options.

The --base option exposes more of how graft internally uses merge with a custom base revision. --base can be used to specify another ancestor than the first and only parent.

The command:

hg graft -r 345 --base 234

is thus pretty much the same as:

hg diff -r 234 -r 345 | hg import

but using merge to resolve conflicts and track moved files.

The result of a merge can thus be backported as a single commit by specifying one of the merge parents as base, and thus effectively grafting the changes from the other side.

It is also possible to collapse multiple changesets and clean up history by specifying another ancestor as base, much like rebase --collapse --keep.

The commit message can be tweaked after the fact using commit --amend .

For using non-ancestors as the base to backout changes, see the backout command and the hidden --parent option.


See 'hg help revisions' for more about specifying revisions.

Returns 0 on successful completion, 1 if there are unresolved files.

options ([+] can be repeated):

-r --rev REV [+] revisions to graft
--base REV base revision when doing the graft merge (ADVANCED)
-c --continue Führt ein unterbrochenes graft fort
--stop stop interrupted graft
--abort abort interrupted graft
-e --edit Ruft Editor zum Setzen der Versionsmeldung auf
--log append graft info to log message
--no-commit don't commit, just apply the changes in working directory
-f --force force graft
-D --currentdate Protokolliert das aktuelle Datum als Commit-Datum
-U --currentuser Protokolliert den aktuellen Nutzer als Autor
-d --date DATUM Protokolliert das angegebenen Datum als Übernahmedatum
-u --user BENUTZER Protokolliert den angegebenen Nutzer als Autor
-t --tool TOOL Methode für das Zusammenführen
-n --dry-run Führt die Aktionen nicht aus, sondern zeigt nur die Ausgabe

global options ([+] can be repeated):

-R --repository ARCHIV Wurzelverzeichnis des Archivs oder Name einer Bündeldatei
--cwd DIR Wechselt das Arbeitsverzeichnis
-y --noninteractive Nicht nachfragen, automatisch die erste Auswahlmöglichkeit für alle Fragen wählen
-q --quiet Unterdrückt Ausgabe
-v --verbose Ausgabe weiterer Informationen
--color TYP when to colorize (boolean, always, auto, never, or debug)
--config CONFIG [+] Setze/Überschreibe Konfigurationsoption (nutze --config Abschnitt.Name=Wert)
--debug Aktiviert Debugausgaben
--debugger Startet den Debugger
--encoding ENCODE Setzt die Zeichenkodierung (Voreinstellung: UTF-8)
--encodingmode MODE Setzt den Modus der Zeichenkodierung (Voreinstellung: strict)
--traceback Gibt die Aufrufhierarchie einer Ausnahmebedingung aus
--time Gibt die Dauer des Befehls aus
--profile Gibt das Ausführungsprofil des Befehls aus
--version Gibt Versionsinformation aus und beendet sich
-h --help Gibt Hilfe aus und beendet sich
--hidden consider hidden changesets
--pager TYP Wann soll die Seite umgebrochen werden (always, auto oder never) (Voreinstellung: auto)