'\" t .\" Title: git-merge .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 09/28/2018 .\" Manual: Git Manual .\" Source: Git 2.11.0 .\" Language: English .\" .TH "GIT\-MERGE" "1" "09/28/2018" "Git 2\&.11\&.0" "Git Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" git-merge \- Join two or more development histories together .SH "SYNOPSIS" .sp .nf \fIgit merge\fR [\-n] [\-\-stat] [\-\-no\-commit] [\-\-squash] [\-\-[no\-]edit] [\-s ] [\-X ] [\-S[]] [\-\-[no\-]allow\-unrelated\-histories] [\-\-[no\-]rerere\-autoupdate] [\-m ] [\&...] \fIgit merge\fR HEAD \&... \fIgit merge\fR \-\-abort .fi .sp .SH "DESCRIPTION" .sp Incorporates changes from the named commits (since the time their histories diverged from the current branch) into the current branch\&. This command is used by \fIgit pull\fR to incorporate changes from another repository and can be used by hand to merge changes from one branch into another\&. .sp Assume the following history exists and the current branch is "\fBmaster\fR": .sp .if n \{\ .RS 4 .\} .nf A\-\-\-B\-\-\-C topic / D\-\-\-E\-\-\-F\-\-\-G master .fi .if n \{\ .RE .\} .sp .sp Then "\fBgit merge topic\fR" will replay the changes made on the \fBtopic\fR branch since it diverged from \fBmaster\fR (i\&.e\&., \fBE\fR) until its current commit (\fBC\fR) on top of \fBmaster\fR, and record the result in a new commit along with the names of the two parent commits and a log message from the user describing the changes\&. .sp .if n \{\ .RS 4 .\} .nf A\-\-\-B\-\-\-C topic / \e D\-\-\-E\-\-\-F\-\-\-G\-\-\-H master .fi .if n \{\ .RE .\} .sp .sp The second syntax ( \fBHEAD\fR \&...) is supported for historical reasons\&. Do not use it from the command line or in new scripts\&. It is the same as \fBgit merge \-m \&.\&.\&.\fR\&. .sp The third syntax ("\fBgit merge \-\-abort\fR") can only be run after the merge has resulted in conflicts\&. \fIgit merge \-\-abort\fR will abort the merge process and try to reconstruct the pre\-merge state\&. However, if there were uncommitted changes when the merge started (and especially if those changes were further modified after the merge was started), \fIgit merge \-\-abort\fR will in some cases be unable to reconstruct the original (pre\-merge) changes\&. Therefore: .sp \fBWarning\fR: Running \fIgit merge\fR with non\-trivial uncommitted changes is discouraged: while possible, it may leave you in a state that is hard to back out of in the case of a conflict\&. .SH "OPTIONS" .PP \-\-commit, \-\-no\-commit .RS 4 Perform the merge and commit the result\&. This option can be used to override \-\-no\-commit\&. .sp With \-\-no\-commit perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and further tweak the merge result before committing\&. .RE .PP \-\-edit, \-e, \-\-no\-edit .RS 4 Invoke an editor before committing successful mechanical merge to further edit the auto\-generated merge message, so that the user can explain and justify the merge\&. The \fB\-\-no\-edit\fR option can be used to accept the auto\-generated message (this is generally discouraged)\&. The \fB\-\-edit\fR (or \fB\-e\fR) option is still useful if you are giving a draft message with the \fB\-m\fR option from the command line and want to edit it in the editor\&. .sp Older scripts may depend on the historical behaviour of not allowing the user to edit the merge log message\&. They will see an editor opened when they run \fBgit merge\fR\&. To make it easier to adjust such scripts to the updated behaviour, the environment variable \fBGIT_MERGE_AUTOEDIT\fR can be set to \fBno\fR at the beginning of them\&. .RE .PP \-\-ff .RS 4 When the merge resolves as a fast\-forward, only update the branch pointer, without creating a merge commit\&. This is the default behavior\&. .RE .PP \-\-no\-ff .RS 4 Create a merge commit even when the merge resolves as a fast\-forward\&. This is the default behaviour when merging an annotated (and possibly signed) tag\&. .RE .PP \-\-ff\-only .RS 4 Refuse to merge and exit with a non\-zero status unless the current \fBHEAD\fR is already up\-to\-date or the merge can be resolved as a fast\-forward\&. .RE .PP \-\-log[=], \-\-no\-log .RS 4 In addition to branch names, populate the log message with one\-line descriptions from at most actual commits that are being merged\&. See also \fBgit-fmt-merge-msg\fR(1)\&. .sp With \-\-no\-log do not list one\-line descriptions from the actual commits being merged\&. .RE .PP \-\-stat, \-n, \-\-no\-stat .RS 4 Show a diffstat at the end of the merge\&. The diffstat is also controlled by the configuration option merge\&.stat\&. .sp With \-n or \-\-no\-stat do not show a diffstat at the end of the merge\&. .RE .PP \-\-squash, \-\-no\-squash .RS 4 Produce the working tree and index state as if a real merge happened (except for the merge information), but do not actually make a commit, move the \fBHEAD\fR, or record \fB$GIT_DIR/MERGE_HEAD\fR (to cause the next \fBgit commit\fR command to create a merge commit)\&. This allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus)\&. .sp With \-\-no\-squash perform the merge and commit the result\&. This option can be used to override \-\-squash\&. .RE .PP \-s , \-\-strategy= .RS 4 Use the given merge strategy; can be supplied more than once to specify them in the order they should be tried\&. If there is no \fB\-s\fR option, a built\-in list of strategies is used instead (\fIgit merge\-recursive\fR when merging a single head, \fIgit merge\-octopus\fR otherwise)\&. .RE .PP \-X