'\" t
.\"     Title: git-merge-file
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\"      Date: 02/26/2025
.\"    Manual: Git Manual
.\"    Source: Git 2.25.1
.\"  Language: English
.\"
.TH "GIT\-MERGE\-FILE" "1" "02/26/2025" "Git 2\&.25\&.1" "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-file \- Run a three\-way file merge
.SH "SYNOPSIS"
.sp
.nf
\fIgit merge\-file\fR [\-L <current\-name> [\-L <base\-name> [\-L <other\-name>]]]
        [\-\-ours|\-\-theirs|\-\-union] [\-p|\-\-stdout] [\-q|\-\-quiet] [\-\-marker\-size=<n>]
        [\-\-[no\-]diff3] <current\-file> <base\-file> <other\-file>
.fi
.sp
.SH "DESCRIPTION"
.sp
\fIgit merge\-file\fR incorporates all changes that lead from the \fB<base\-file>\fR to \fB<other\-file>\fR into \fB<current\-file>\fR\&. The result ordinarily goes into \fB<current\-file>\fR\&. \fIgit merge\-file\fR is useful for combining separate changes to an original\&. Suppose \fB<base\-file>\fR is the original, and both \fB<current\-file>\fR and \fB<other\-file>\fR are modifications of \fB<base\-file>\fR, then \fIgit merge\-file\fR combines both changes\&.
.sp
A conflict occurs if both \fB<current\-file>\fR and \fB<other\-file>\fR have changes in a common segment of lines\&. If a conflict is found, \fIgit merge\-file\fR normally outputs a warning and brackets the conflict with lines containing <<<<<<< and >>>>>>> markers\&. A typical conflict will look like this:
.sp
.if n \{\
.RS 4
.\}
.nf
<<<<<<< A
lines in file A
=======
lines in file B
>>>>>>> B
.fi
.if n \{\
.RE
.\}
.sp
If there are conflicts, the user should edit the result and delete one of the alternatives\&. When \fB\-\-ours\fR, \fB\-\-theirs\fR, or \fB\-\-union\fR option is in effect, however, these conflicts are resolved favouring lines from \fB<current\-file>\fR, lines from \fB<other\-file>\fR, or lines from both respectively\&. The length of the conflict markers can be given with the \fB\-\-marker\-size\fR option\&.
.sp
The exit value of this program is negative on error, and the number of conflicts otherwise (truncated to 127 if there are more than that many conflicts)\&. If the merge was clean, the exit value is 0\&.
.sp
\fIgit merge\-file\fR is designed to be a minimal clone of RCS \fImerge\fR; that is, it implements all of RCS \fImerge\fR\*(Aqs functionality which is needed by \fBgit\fR(1)\&.
.SH "OPTIONS"
.PP
\-L <label>
.RS 4
This option may be given up to three times, and specifies labels to be used in place of the corresponding file names in conflict reports\&. That is,
\fBgit merge\-file \-L x \-L y \-L z a b c\fR
generates output that looks like it came from files x, y and z instead of from files a, b and c\&.
.RE
.PP
\-p
.RS 4
Send results to standard output instead of overwriting
\fB<current\-file>\fR\&.
.RE
.PP
\-q
.RS 4
Quiet; do not warn about conflicts\&.
.RE
.PP
\-\-diff3
.RS 4
Show conflicts in "diff3" style\&.
.RE
.PP
\-\-ours, \-\-theirs, \-\-union
.RS 4
Instead of leaving conflicts in the file, resolve conflicts favouring our (or their or both) side of the lines\&.
.RE
.SH "EXAMPLES"
.PP
\fBgit merge\-file README\&.my README README\&.upstream\fR
.RS 4
combines the changes of README\&.my and README\&.upstream since README, tries to merge them and writes the result into README\&.my\&.
.RE
.PP
\fBgit merge\-file \-L a \-L b \-L c tmp/a123 tmp/b234 tmp/c345\fR
.RS 4
merges tmp/a123 and tmp/c345 with the base tmp/b234, but uses labels
\fBa\fR
and
\fBc\fR
instead of
\fBtmp/a123\fR
and
\fBtmp/c345\fR\&.
.RE
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
