具有以下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。特性和发布都不再可用,我需要找到commit
g
,即发布分支合并到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