]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-merge-file.txt
Merge branch 'kk/maint-prefix-in-config-mak'
[thirdparty/git.git] / Documentation / git-merge-file.txt
CommitLineData
9abaa7f0 1git-merge-file(1)
38477d9e 2=================
9abaa7f0
JS
3
4NAME
5----
c3f0baac 6git-merge-file - Run a three-way file merge
9abaa7f0
JS
7
8
9SYNOPSIS
10--------
11[verse]
b1889c36 12'git merge-file' [-L <current-name> [-L <base-name> [-L <other-name>]]]
3a15048d 13 [--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
73eb40ee 14 <current-file> <base-file> <other-file>
9abaa7f0
JS
15
16
17DESCRIPTION
18-----------
0b444cdb 19'git merge-file' incorporates all changes that lead from the `<base-file>`
9abaa7f0 20to `<other-file>` into `<current-file>`. The result ordinarily goes into
0b444cdb 21`<current-file>`. 'git merge-file' is useful for combining separate changes
9abaa7f0 22to an original. Suppose `<base-file>` is the original, and both
29b802aa 23`<current-file>` and `<other-file>` are modifications of `<base-file>`,
0b444cdb 24then 'git merge-file' combines both changes.
9abaa7f0
JS
25
26A conflict occurs if both `<current-file>` and `<other-file>` have changes
0b444cdb 27in a common segment of lines. If a conflict is found, 'git merge-file'
29b802aa
RW
28normally outputs a warning and brackets the conflict with lines containing
29<<<<<<< and >>>>>>> markers. A typical conflict will look like this:
9abaa7f0
JS
30
31 <<<<<<< A
32 lines in file A
33 =======
34 lines in file B
35 >>>>>>> B
36
37If there are conflicts, the user should edit the result and delete one of
3a15048d
BW
38the alternatives. When `--ours`, `--theirs`, or `--union` option is in effect,
39however, these conflicts are resolved favouring lines from `<current-file>`,
40lines from `<other-file>`, or lines from both respectively. The length of the
41conflict markers can be given with the `--marker-size` option.
9abaa7f0
JS
42
43The exit value of this program is negative on error, and the number of
44conflicts otherwise. If the merge was clean, the exit value is 0.
45
0b444cdb 46'git merge-file' is designed to be a minimal clone of RCS 'merge'; that is, it
2fd02c92 47implements all of RCS 'merge''s functionality which is needed by
5162e697 48linkgit:git[1].
9abaa7f0
JS
49
50
51OPTIONS
52-------
53
54-L <label>::
55 This option may be given up to three times, and
56 specifies labels to be used in place of the
57 corresponding file names in conflict reports. That is,
b1889c36 58 `git merge-file -L x -L y -L z a b c` generates output that
9abaa7f0
JS
59 looks like it came from files x, y and z instead of
60 from files a, b and c.
61
62-p::
63 Send results to standard output instead of overwriting
64 `<current-file>`.
65
66-q::
29b802aa 67 Quiet; do not warn about conflicts.
9abaa7f0 68
73eb40ee
JH
69--ours::
70--theirs::
3a15048d 71--union::
73eb40ee 72 Instead of leaving conflicts in the file, resolve conflicts
3a15048d 73 favouring our (or their or both) side of the lines.
73eb40ee 74
9abaa7f0
JS
75
76EXAMPLES
77--------
78
79git merge-file README.my README README.upstream::
80
81 combines the changes of README.my and README.upstream since README,
82 tries to merge them and writes the result into README.my.
83
84git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345::
85
86 merges tmp/a123 and tmp/c345 with the base tmp/b234, but uses labels
87 `a` and `c` instead of `tmp/a123` and `tmp/c345`.
88
9abaa7f0
JS
89GIT
90---
9e1f0a85 91Part of the linkgit:git[1] suite