具有以下git历史记录:

            f---g---h--- feature
           /         \
      c---e---i---j---k---l--- release
     /                     \
-a--b---d---m---n---o---p---q---[hundreds of commits]--- master

我有承诺的SHA。特性和发布都不再可用,我需要找到commitg,即发布分支合并到master中的位置。有了不同问题(Find merge commit which include a specific commit)的答案,我只能找到commit k,在这里特性分支合并到了发布分支中。我该怎么办?

最佳答案

如果功能或发布分支具有唯一的名称,您应该可以通过在其合并提交中搜索该唯一名称(例如,使用q然后在master字段中输入术语)来在gitk --merges上找到Find,因为git默认情况下会在合并提交消息中记录合并的分支名称。
否则,您只需在master上搜索第一个合并提交,该提交已与类似于此脚本的脚本合并:

g=ad198bc
for i in $(git log --merges --reverse --format=%H); do
    revlist=$(git rev-list -1 $g --not $i)
    if [ $? -eq 0 ]; then
        if [ "$revlist" = "" ]; then
            echo "Merge commit $i has $g merged."
            exit
        fi
    fi
done

09-04 02:32
查看更多