|  | git-merge-file(1) | 
|  | ================= | 
|  |  | 
|  | NAME | 
|  | ---- | 
|  | git-merge-file - Run a three-way file merge | 
|  |  | 
|  |  | 
|  | SYNOPSIS | 
|  | -------- | 
|  | [verse] | 
|  | 'git merge-file' [-L <current-name> [-L <base-name> [-L <other-name>]]] | 
|  | [--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>] | 
|  | [--[no-]diff3] [--object-id] <current> <base> <other> | 
|  |  | 
|  |  | 
|  | DESCRIPTION | 
|  | ----------- | 
|  | Given three files `<current>`, `<base>` and `<other>`, | 
|  | 'git merge-file' incorporates all changes that lead from `<base>` | 
|  | to `<other>` into `<current>`. The result ordinarily goes into | 
|  | `<current>`. 'git merge-file' is useful for combining separate changes | 
|  | to an original. Suppose `<base>` is the original, and both | 
|  | `<current>` and `<other>` are modifications of `<base>`, | 
|  | then 'git merge-file' combines both changes. | 
|  |  | 
|  | A conflict occurs if both `<current>` and `<other>` have changes | 
|  | in a common segment of lines. If a conflict is found, 'git merge-file' | 
|  | normally outputs a warning and brackets the conflict with lines containing | 
|  | <<<<<<< and >>>>>>> markers. A typical conflict will look like this: | 
|  |  | 
|  | <<<<<<< A | 
|  | lines in file A | 
|  | ======= | 
|  | lines in file B | 
|  | >>>>>>> B | 
|  |  | 
|  | If there are conflicts, the user should edit the result and delete one of | 
|  | the alternatives.  When `--ours`, `--theirs`, or `--union` option is in effect, | 
|  | however, these conflicts are resolved favouring lines from `<current>`, | 
|  | lines from `<other>`, or lines from both respectively.  The length of the | 
|  | conflict markers can be given with the `--marker-size` option. | 
|  |  | 
|  | If `--object-id` is specified, exactly the same behavior occurs, except that | 
|  | instead of specifying what to merge as files, it is specified as a list of | 
|  | object IDs referring to blobs. | 
|  |  | 
|  | 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. | 
|  |  | 
|  | 'git merge-file' is designed to be a minimal clone of RCS 'merge'; that is, it | 
|  | implements all of RCS 'merge''s functionality which is needed by | 
|  | linkgit:git[1]. | 
|  |  | 
|  |  | 
|  | OPTIONS | 
|  | ------- | 
|  |  | 
|  | --object-id:: | 
|  | Specify the contents to merge as blobs in the current repository instead of | 
|  | files.  In this case, the operation must take place within a valid repository. | 
|  | + | 
|  | If the `-p` option is specified, the merged file (including conflicts, if any) | 
|  | goes to standard output as normal; otherwise, the merged file is written to the | 
|  | object store and the object ID of its blob is written to standard output. | 
|  |  | 
|  | -L <label>:: | 
|  | 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, | 
|  | `git merge-file -L x -L y -L z a b c` generates output that | 
|  | looks like it came from files x, y and z instead of | 
|  | from files a, b and c. | 
|  |  | 
|  | -p:: | 
|  | Send results to standard output instead of overwriting | 
|  | `<current>`. | 
|  |  | 
|  | -q:: | 
|  | Quiet; do not warn about conflicts. | 
|  |  | 
|  | --diff3:: | 
|  | Show conflicts in "diff3" style. | 
|  |  | 
|  | --zdiff3:: | 
|  | Show conflicts in "zdiff3" style. | 
|  |  | 
|  | --ours:: | 
|  | --theirs:: | 
|  | --union:: | 
|  | Instead of leaving conflicts in the file, resolve conflicts | 
|  | favouring our (or their or both) side of the lines. | 
|  |  | 
|  | --diff-algorithm={patience|minimal|histogram|myers}:: | 
|  | Use a different diff algorithm while merging. The current default is "myers", | 
|  | but selecting more recent algorithm such as "histogram" can help | 
|  | avoid mismerges that occur due to unimportant matching lines | 
|  | (such as braces from distinct functions). See also | 
|  | linkgit:git-diff[1] `--diff-algorithm`. | 
|  |  | 
|  | EXAMPLES | 
|  | -------- | 
|  |  | 
|  | `git merge-file README.my README README.upstream`:: | 
|  |  | 
|  | combines the changes of README.my and README.upstream since README, | 
|  | tries to merge them and writes the result into README.my. | 
|  |  | 
|  | `git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345`:: | 
|  |  | 
|  | merges tmp/a123 and tmp/c345 with the base tmp/b234, but uses labels | 
|  | `a` and `c` instead of `tmp/a123` and `tmp/c345`. | 
|  |  | 
|  | `git merge-file -p --object-id abc1234 def567 890abcd`:: | 
|  |  | 
|  | combines the changes of the blob abc1234 and 890abcd since def567, | 
|  | tries to merge them and writes the result to standard output | 
|  |  | 
|  | GIT | 
|  | --- | 
|  | Part of the linkgit:git[1] suite |