给定两个(或更多)提交,我想找到加入它们的最旧的合并。类似于相反的东西git merge-base
(找到最年轻的共同祖先)。请注意,我正在寻找的提交将是起始提交的年轻后代。
换句话说:我想调查合并两个给定提交的合并提交(同一文件发生更改的地方)。
给定两个(或更多)提交,我想找到加入它们的最旧的合并。类似于相反的东西git merge-base
(找到最年轻的共同祖先)。请注意,我正在寻找的提交将是起始提交的年轻后代。
换句话说:我想调查合并两个给定提交的合并提交(同一文件发生更改的地方)。
如果 $a 和 $b 是两个提交哈希并且它们都包含在 master 中,那么说
git rev-list $a..master --ancestry-path >a
git rev-list $b..master --ancestry-path >b
然后使用 diff 工具找到 a 和 b 的最后一个公共行。
oldest-merge() {
( for c; do git log --all --merges --ancestry-path ^$c --pretty='%aI %h %s'; done ) \
| sort | uniq -c | awk "\$1 == $# {print;exit}"
}
oldest-merge `git rev-list --all --grep=BUG-27182` # e.g.
最后的 awk 采用出现在所有合并祖先列表中的第一个提交。