如何找到一个提交的合并分支来自?

时间:2014-06-26 23:41:16

标签: git

我希望找到提交的原始分支。并非所有包含此提交的分支,但是已合并到包含它的master的分支。

我已经看到了一些组合 git rev-list <name_of_branch> | grep <sha>&amp; git branch --contains <sha>要做到这一点,但没有直接的。

我的目标是,如果有一个提交1140bdf通过分支master进入ta1234_foo,那么稍后我就可以断言即使主人被合并回其他分支。

我们正在使用Github,所以如果解决方案的一部分,那么命令行就更好了。

1 个答案:

答案 0 :(得分:2)

这将显示首次合并提交的合并历史记录:

merges-introducing() {
    local introducing;
    if introducing=`git rev-parse $1`; then 
        shift
        git rev-list --ancestry-path --parents --reverse ^$introducing ${@-HEAD} \
        | awk '{seen[$1]=1} NR>1 && !seen[$2] {print $1}' \
        | xargs git show --oneline --no-patch
     fi
}

所以对于你的情况你要做

merges-introducing 1140bdf master

查看在前往当前主分支的途中将1140bdf引入新分支的合并序列。

这个想法很简单:--ancestry-path --reverse可以发音为“下降路径”,我们在该路径上看到的任何提交都不是通过其第一个父提出的有趣提交而只能是包含该提交的合并有趣的是第一次进入分支机构。