| '\" 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: 11/18/2018 |
| .\" Manual: Git Manual |
| .\" Source: Git 2.20.0.rc0 |
| .\" Language: English |
| .\" |
| .TH "GIT\-MERGE\-FILE" "1" "11/18/2018" "Git 2\&.20\&.0\&.rc0" "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 |