'\" t
.\"     Title: git-merge-index
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\"      Date: 09/29/2025
.\"    Manual: Git Manual
.\"    Source: Git 1.8.3.1
.\"  Language: English
.\"
.TH "GIT\-MERGE\-INDEX" "1" "09/29/2025" "Git 1\&.8\&.3\&.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-index \- Run a merge for files needing merging
.SH "SYNOPSIS"
.sp
.nf
\fIgit merge\-index\fR [\-o] [\-q] <merge\-program> (\-a | [\-\-] <file>*)
.fi
.sp
.SH "DESCRIPTION"
.sp
This looks up the <file>(s) in the index and, if there are any merge entries, passes the SHA\-1 hash for those files as arguments 1, 2, 3 (empty argument if no file), and <file> as argument 4\&. File modes for the three files are passed as arguments 5, 6 and 7\&.
.SH "OPTIONS"
.PP
\-\-
.RS 4
Do not interpret any more arguments as options\&.
.RE
.PP
\-a
.RS 4
Run merge against all files in the index that need merging\&.
.RE
.PP
\-o
.RS 4
Instead of stopping at the first failed merge, do all of them in one shot \- continue with merging even when previous merges returned errors, and only return the error code after all the merges\&.
.RE
.PP
\-q
.RS 4
Do not complain about a failed merge program (a merge program failure usually indicates conflicts during the merge)\&. This is for porcelains which might want to emit custom messages\&.
.RE
.sp
If \fIgit merge\-index\fR is called with multiple <file>s (or \-a) then it processes them in turn only stopping if merge returns a non\-zero exit code\&.
.sp
Typically this is run with a script calling Git\(cqs imitation of the \fImerge\fR command from the RCS package\&.
.sp
A sample script called \fIgit merge\-one\-file\fR is included in the distribution\&.
.sp
ALERT ALERT ALERT! The Git "merge object order" is different from the RCS \fImerge\fR program merge object order\&. In the above ordering, the original is first\&. But the argument order to the 3\-way merge program \fImerge\fR is to have the original in the middle\&. Don\(cqt ask me why\&.
.sp
Examples:
.sp
.if n \{\
.RS 4
.\}
.nf
torvalds@ppc970:~/merge\-test> git merge\-index cat MM
This is MM from the original tree\&.                    # original
This is modified MM in the branch A\&.                  # merge1
This is modified MM in the branch B\&.                  # merge2
This is modified MM in the branch B\&.                  # current contents
.fi
.if n \{\
.RE
.\}
.sp
or
.sp
.if n \{\
.RS 4
.\}
.nf
torvalds@ppc970:~/merge\-test> git merge\-index cat AA MM
cat: : No such file or directory
This is added AA in the branch A\&.
This is added AA in the branch B\&.
This is added AA in the branch B\&.
fatal: merge program failed
.fi
.if n \{\
.RE
.\}
.sp
where the latter example shows how \fIgit merge\-index\fR will stop trying to merge once anything has returned an error (i\&.e\&., cat returned an error for the AA file, because it didn\(cqt exist in the original, and thus \fIgit merge\-index\fR didn\(cqt even try to merge the MM thing)\&.
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
