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

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


SYNOPSIS
--------
'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 SHA1 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 are over.

-q::
	Do not complain about failed merge program (the merge program
	failure usually indicates conflicts during 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 the a script calling 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).

Author
------
Written by Linus Torvalds <torvalds@osdl.org>
One-shot merge by Petr Baudis <pasky@ucw.cz>

Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

