1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en">
5 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8" />
6 <meta name=
"generator" content=
"AsciiDoc 8.2.5" />
7 <style type=
"text/css">
9 p
, li
, dt
, dd
, div
, pre
, h1
, h2
, h3
, h4
, h5
, h6
{
11 border: 1px solid red;
16 margin: 1em 5% 1em 5%;
21 text-decoration: underline
;
39 h1
, h2
, h3
, h4
, h5
, h6
{
41 font-family: sans-serif
;
48 border-bottom: 2px solid silver
;
66 border: 1px solid silver
;
81 font-family: sans-serif
;
88 font-family: sans-serif
;
92 font-family: sans-serif
;
94 border-top: 2px solid silver
;
100 padding-bottom: 0.5em;
104 padding-bottom: 0.5em;
108 div
.tableblock
, div
.imageblock
, div
.exampleblock
, div
.verseblock
,
109 div
.quoteblock
, div
.literalblock
, div
.listingblock
, div
.sidebarblock
,
110 div
.admonitionblock
{
113 margin-bottom: 1.5em;
115 div
.admonitionblock
{
117 margin-bottom: 2.5em;
120 div
.content
{ /* Block element content. */
124 /* Block element titles. */
125 div
.title
, caption
.title
{
126 font-family: sans-serif
;
130 margin-bottom: 0.5em;
136 td div
.title:first-child
{
139 div
.content div
.title:first-child
{
142 div
.content
+ div
.title
{
146 div
.sidebarblock
> div
.content
{
148 border: 1px solid silver
;
155 div
.listingblock
> div
.content
{
156 border: 1px solid silver
;
161 div
.quoteblock
> div
.content
{
168 div
.verseblock
+ div
.attribution
{
172 div
.admonitionblock
.icon
{
176 text-decoration: underline
;
178 padding-right: 0.5em;
180 div
.admonitionblock td
.content
{
182 border-left: 2px solid silver
;
185 div
.exampleblock
> div
.content
{
186 border-left: 2px solid silver
;
190 div
.verseblock div
.content
{
194 div
.imageblock div
.content
{ padding-left: 0; }
195 div
.imageblock img
{ border: 1px solid silver
; }
196 span
.image img
{ border-style: none
; }
200 margin-bottom: 0.8em;
212 list-style-position: outside
;
215 list-style-type: lower-alpha
;
218 div
.tableblock
> table
{
219 border: 3px solid
#527bbd;
222 font-family: sans-serif
;
231 margin-bottom: 0.8em;
239 padding-right: 0.8em;
246 div#footer-badges
{ display: none
; }
251 font-family: sans-serif
;
255 margin-bottom: 0.1em;
258 div
.toclevel1
, div
.toclevel2
, div
.toclevel3
, div
.toclevel4
{
274 include1::./stylesheets
/xhtml11-manpage
.css
[]
275 /* Workarounds for IE6's broken and incomplete CSS2. */
277 div
.sidebar-content
{
279 border: 1px solid silver
;
282 div
.sidebar-title
, div
.image-title
{
283 font-family: sans-serif
;
286 margin-bottom: 0.5em;
289 div
.listingblock div
.content
{
290 border: 1px solid silver
;
295 div
.quoteblock-content
{
299 div
.exampleblock-content
{
300 border-left: 2px solid silver
;
304 /* IE6 sets dynamically generated links as visited. */
305 div#toc
a:visited
{ color: blue
; }
307 <title>git-merge-base(
1)
</title>
312 git-merge-base(
1) Manual Page
315 <div class=
"sectionbody">
317 Find as good common ancestors as possible for a merge
322 <div class=
"sectionbody">
323 <div class=
"para"><p><em>git merge-base
</em> [-a|--all]
<commit
> <commit
>…</p></div>
325 <h2 id=
"_description">DESCRIPTION
</h2>
326 <div class=
"sectionbody">
327 <div class=
"para"><p><em>git merge-base
</em> finds best common ancestor(s) between two commits to use
328 in a three-way merge. One common ancestor is
<em>better
</em> than another common
329 ancestor if the latter is an ancestor of the former. A common ancestor
330 that does not have any better common ancestor is a
<em>best common
331 ancestor
</em>, i.e. a
<em>merge base
</em>. Note that there can be more than one
332 merge base for a pair of commits.
</p></div>
333 <div class=
"para"><p>Among the two commits to compute the merge base from, one is specified by
334 the first commit argument on the command line; the other commit is a
335 (possibly hypothetical) commit that is a merge across all the remaining
336 commits on the command line. As the most common special case, specifying only
337 two commits on the command line means computing the merge base between
338 the given two commits.
</p></div>
339 <div class=
"para"><p>As a consequence, the
<em>merge base
</em> is not necessarily contained in each of the
340 commit arguments if more than two commits are specified. This is different
341 from
<a href=
"git-show-branch.html">git-show-branch(
1)
</a> when used with the
<tt>--merge-base
</tt> option.
</p></div>
343 <h2 id=
"_options">OPTIONS
</h2>
344 <div class=
"sectionbody">
345 <div class=
"vlist"><dl>
354 Output all merge bases for the commits, instead of just one.
359 <h2 id=
"_discussion">DISCUSSION
</h2>
360 <div class=
"sectionbody">
361 <div class=
"para"><p>Given two commits
<em>A
</em> and
<em>B
</em>,
<tt>git merge-base A B
</tt> will output a commit
362 which is reachable from both
<em>A
</em> and
<em>B
</em> through the parent relationship.
</p></div>
363 <div class=
"para"><p>For example, with this topology:
</p></div>
364 <div class=
"literalblock">
365 <div class=
"content">
366 <pre><tt> o---o---o---B
368 ---o---
1---o---o---o---A
</tt></pre>
370 <div class=
"para"><p>the merge base between
<em>A
</em> and
<em>B
</em> is
<em>1</em>.
</p></div>
371 <div class=
"para"><p>Given three commits
<em>A
</em>,
<em>B
</em> and
<em>C
</em>,
<tt>git merge-base A B C
</tt> will compute the
372 merge base between
<em>A
</em> and a hypothetical commit
<em>M
</em>, which is a merge
373 between
<em>B
</em> and
<em>C
</em>. For example, with this topology:
</p></div>
374 <div class=
"literalblock">
375 <div class=
"content">
376 <pre><tt> o---o---o---o---C
380 ---
2---
1---o---o---o---A
</tt></pre>
382 <div class=
"para"><p>the result of
<tt>git merge-base A B C
</tt> is
<em>1</em>. This is because the
383 equivalent topology with a merge commit
<em>M
</em> between
<em>B
</em> and
<em>C
</em> is:
</p></div>
384 <div class=
"literalblock">
385 <div class=
"content">
386 <pre><tt> o---o---o---o---o
390 ---
2---
1---o---o---o---A
</tt></pre>
392 <div class=
"para"><p>and the result of
<tt>git merge-base A M
</tt> is
<em>1</em>. Commit
<em>2</em> is also a
393 common ancestor between
<em>A
</em> and
<em>M
</em>, but
<em>1</em> is a better common ancestor,
394 because
<em>2</em> is an ancestor of
<em>1</em>. Hence,
<em>2</em> is not a merge base.
</p></div>
395 <div class=
"para"><p>When the history involves criss-cross merges, there can be more than one
396 <em>best
</em> common ancestor for two commits. For example, with this topology:
</p></div>
397 <div class=
"literalblock">
398 <div class=
"content">
399 <pre><tt>---
1---o---A
403 ---
2---o---o---B
</tt></pre>
405 <div class=
"para"><p>both
<em>1</em> and
<em>2</em> are merge-bases of A and B. Neither one is better than
406 the other (both are
<em>best
</em> merge bases). When the
<tt>--all
</tt> option is not given,
407 it is unspecified which best one is output.
</p></div>
409 <h2 id=
"_author">Author
</h2>
410 <div class=
"sectionbody">
411 <div class=
"para"><p>Written by Linus Torvalds
<torvalds@osdl.org
></p></div>
413 <h2 id=
"_documentation">Documentation
</h2>
414 <div class=
"sectionbody">
415 <div class=
"para"><p>Documentation by David Greaves, Junio C Hamano and the git-list
<git@vger.kernel.org
>.
</p></div>
417 <h2 id=
"_git">GIT
</h2>
418 <div class=
"sectionbody">
419 <div class=
"para"><p>Part of the
<a href=
"git.html">git(
1)
</a> suite
</p></div>
422 <div id=
"footer-text">
423 Last updated
2009-
12-
03 09:
12:
40 UTC