マニュアルページセク ション 1: ユーザーコマンド

印刷ビューの終了

更新: 2014 年 7 月
 
 

git-merge-base (1)

名前

git-merge-base - Find as good common ancestors as possible for a merge

形式

git merge-base [-a|--all] <commit> <commit>...
git merge-base [-a|--all] --octopus <commit>...
git merge-base --independent <commit>...

説明




Git Manual                                      GIT-MERGE-BASE(1)



NAME
     git-merge-base - Find as good common ancestors as possible
     for a merge

SYNOPSIS
     git merge-base [-a|--all] <commit> <commit>...
     git merge-base [-a|--all] --octopus <commit>...
     git merge-base --independent <commit>...


DESCRIPTION
     git merge-base finds best common ancestor(s) between two
     commits to use in a three-way merge. One common ancestor is
     better than another common ancestor if the latter is an
     ancestor of the former. A common ancestor that does not have
     any better common ancestor is a best common ancestor, i.e. a
     merge base. Note that there can be more than one merge base
     for a pair of commits.

OPERATION MODE
     As the most common special case, specifying only two commits
     on the command line means computing the merge base between
     the given two commits.

     More generally, among the two commits to compute the merge
     base from, one is specified by the first commit argument on
     the command line; the other commit is a (possibly
     hypothetical) commit that is a merge across all the
     remaining commits on the command line.

     As a consequence, the merge base is not necessarily
     contained in each of the commit arguments if more than two
     commits are specified. This is different from git-show-
     branch(1) when used with the --merge-base option.

     --octopus
         Compute the best common ancestors of all supplied
         commits, in preparation for an n-way merge. This mimics
         the behavior of git show-branch --merge-base.

     --independent
         Instead of printing merge bases, print a minimal subset
         of the supplied commits with the same ancestors. In
         other words, among the commits given, list those which
         cannot be reached from any other. This mimics the
         behavior of git show-branch --independent.

OPTIONS
     -a, --all
         Output all merge bases for the commits, instead of just
         one.




Git 1.7.9.2          Last change: 02/22/2012                    1






Git Manual                                      GIT-MERGE-BASE(1)



DISCUSSION
     Given two commits A and B, git merge-base A B will output a
     commit which is reachable from both A and B through the
     parent relationship.

     For example, with this topology:

                  o---o---o---B
                 /
         ---o---1---o---o---o---A

     the merge base between A and B is 1.

     Given three commits A, B and C, git merge-base A B C will
     compute the merge base between A and a hypothetical commit
     M, which is a merge between B and C. For example, with this
     topology:

                o---o---o---o---C
               /
              /   o---o---o---B
             /   /
         ---2---1---o---o---o---A

     the result of git merge-base A B C is 1. This is because the
     equivalent topology with a merge commit M between B and C
     is:

                o---o---o---o---o
               /                 \
              /   o---o---o---o---M
             /   /
         ---2---1---o---o---o---A

     and the result of git merge-base A M is 1. Commit 2 is also
     a common ancestor between A and M, but 1 is a better common
     ancestor, because 2 is an ancestor of 1. Hence, 2 is not a
     merge base.

     The result of git merge-base --octopus A B C is 2, because 2
     is the best common ancestor of all commits.

     When the history involves criss-cross merges, there can be
     more than one best common ancestor for two commits. For
     example, with this topology:

         ---1---o---A
             \ /
              X
             / \
         ---2---o---o---B




Git 1.7.9.2          Last change: 02/22/2012                    2






Git Manual                                      GIT-MERGE-BASE(1)



     both 1 and 2 are merge-bases of A and B. Neither one is
     better than the other (both are best merge bases). When the
     --all option is not given, it is unspecified which best one
     is output.


ATTRIBUTES
     See attributes(5) for descriptions of the following
     attributes:

     +---------------+--------------------------+
     |ATTRIBUTE TYPE |     ATTRIBUTE VALUE      |
     +---------------+--------------------------+
     |Availability   | developer/versioning/git |
     +---------------+--------------------------+
     |Stability      | Uncommitted              |
     +---------------+--------------------------+
SEE ALSO
     git-rev-list(1), git-show-branch(1), git-merge(1)

GIT
     Part of the git(1) suite



NOTES
     This software was built from source available at
     https://java.net/projects/solaris-userland.  The original
     community source was downloaded from  http://git-
     core.googlecode.com/files/git-1.7.9.2.tar.gz

     Further information about this software can be found on the
     open source community website at http://git-scm.com/.






















Git 1.7.9.2          Last change: 02/22/2012                    3