A git command to find the merge that introduced a given commit.
Python
Switch branches/tags
Nothing to show
Latest commit bc94035 Oct 19, 2016 @jianli Increment version to 0.3.0.
Permalink
Failed to load latest commit information.
get_merge make changes as requested in PR Oct 19, 2016
README.md make changes as requested in PR Oct 19, 2016
setup.py Increment version to 0.3.0. Nov 15, 2016

README.md

git get-merge is a git command to locate the merge that introduced a given commit into a given branch in your repository (master by default). It is correct with very high probability.

Installation

> pip install git-get-merge

Usage

> git get-merge d50a9d6
commit bf9629e38ec3f280704fa868e70fbcbfbcc5f442
Merge: 622bc4f d50a9d6
Author: Jian
Date:   Fri Jul 4 02:01:40 2014 +0200

    Merge pull request #5 from lowks/patch-1

    Update setup.py

More Info

> git get-merge help
usage: git get-merge <sha> [branch]

Attempt to find when commit <sha> was merged to <branch>, where <branch> is
`master` by default. Two methods are used:

# method 1

    Stupid algorithm which works most of the time.

    Follow the commit downstream and return the first merge into another
    branch, as opposed to a merge from another branch. Hopefully, this other
    branch is <branch>.

    Abort if the graph starts branching or terminates.


# method 2

    Find the earliest common commit between ancestry-path and first-parent.

    Source: http://stackoverflow.com/a/8492711

    This is the correct algorithm assuming a properly-maintained git
    history. However, if there has ever been a fast-forward merge of a feature
    branch into <branch>, the first-parent history of <branch> will have been
    tampered with and this "correct" approach could fail.