]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-merge-file.txt
merge-file: add option to specify the marker size
[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>]]]
11f3aa23 13 [--ours|--theirs] [-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
73eb40ee
JH
38the alternatives. When `--ours` or `--theirs` option is in effect, however,
39these conflicts are resolved favouring lines from `<current-file>` or
11f3aa23
BW
40lines from `<other-file>` respectively. The length of the conflict markers
41can 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::
71 Instead of leaving conflicts in the file, resolve conflicts
72 favouring our (or their) side of the lines.
73
9abaa7f0
JS
74
75EXAMPLES
76--------
77
78git merge-file README.my README README.upstream::
79
80 combines the changes of README.my and README.upstream since README,
81 tries to merge them and writes the result into README.my.
82
83git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345::
84
85 merges tmp/a123 and tmp/c345 with the base tmp/b234, but uses labels
86 `a` and `c` instead of `tmp/a123` and `tmp/c345`.
87
88
89Author
90------
91Written by Johannes Schindelin <johannes.schindelin@gmx.de>
92
93
94Documentation
95--------------
96Documentation by Johannes Schindelin and the git-list <git@vger.kernel.org>,
0979c106 97with parts copied from the original documentation of RCS 'merge'.
9abaa7f0
JS
98
99GIT
100---
9e1f0a85 101Part of the linkgit:git[1] suite