git-merge-index(1)
==================

NAME
----
git-merge-index - Run a merge for files needing merging


SYNOPSIS
--------
[verse]
'git merge-index' [-o] [-q] <merge-program> (-a | [--] <file>*)

DESCRIPTION
-----------
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.

OPTIONS
-------
\--::
	Do not interpret any more arguments as options.

-a::
	Run merge against all files in the index that need merging.

-o::
	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.

-q::
	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.

If 'git merge-index' is called with multiple <file>s (or -a) then it
processes them in turn only stopping if merge returns a non-zero exit
code.

Typically this is run with a script calling Git's imitation of
the 'merge' command from the RCS package.

A sample script called 'git merge-one-file' is included in the
distribution.

ALERT ALERT ALERT! The Git "merge object order" is different from the
RCS 'merge' program merge object order. In the above ordering, the
original is first. But the argument order to the 3-way merge program
'merge' is to have the original in the middle. Don't ask me why.

Examples:

  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

or

  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

where the latter example shows how 'git merge-index' will stop trying to
merge once anything has returned an error (i.e., `cat` returned an error
for the AA file, because it didn't exist in the original, and thus
'git merge-index' didn't even try to merge the MM thing).

GIT
---
Part of the linkgit:git[1] suite
