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

Git 如何找到提交来自的合并分支?,git,Git,我正在查找提交的原始分支。不是包含此提交的所有分支,而是合并到包含此提交的主节点中的分支 我看到了一些 git rev list | grep&git branch——包含,但没有直接的内容 我的目标是,如果有一个commit1140bdf通过分支ta1234_foo进入master,那么以后我可以断言,即使在master被合并回其他分支之后 我们正在使用Github,因此如果这是解决方案的一部分,那么命令行就更好了。这将显示首次合并提交的合并历史: merges-introducing() {

我正在查找提交的原始分支。不是包含此提交的所有分支,而是合并到包含此提交的主节点中的分支

我看到了一些
git rev list | grep
&
git branch——包含
,但没有直接的内容

我的目标是,如果有一个commit
1140bdf
通过分支
ta1234_foo
进入
master
,那么以后我可以断言,即使在master被合并回其他分支之后


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

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

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
引入当前主分支的新分支的合并顺序


这个想法很简单:
--祖先路径--reverse
可以读作“下降路径到”,我们在该路径上看到的任何提交,如果不是通过其第一个父级从感兴趣的提交派生而来,则只能是首次将感兴趣的提交合并到分支中

你好@jthill。这行看起来不错,但当我运行它时,它似乎显示了所有主合并。需要一个特定的git版本吗?你是对的——它没有消除所有无趣的合并。我认为它现在只打印了一些有趣的部分。稍微修改一下,这似乎对我有用:用
$introduction…$2
替换
^$introduction${-HEAD}
有什么帮助?我看不出你在追求什么效果。如果我使用你的脚本,它总是说:
fatal:master:在工作树中没有这样的路径。使用“git--…”指定本地不存在的路径。