给定两个(或多个)提交,我想找到合并它们的最古老的合并记录。类似于git merge-base
的相反操作(它查找最年轻的共同祖先)。请注意,我正在寻找的提交将是起始提交的较年轻后代。
换句话说:我想调查合并了两个给定提交的合并记录(其中对同一文件进行了更改)。
给定两个(或多个)提交,我想找到合并它们的最古老的合并记录。类似于git merge-base
的相反操作(它查找最年轻的共同祖先)。请注意,我正在寻找的提交将是起始提交的较年轻后代。
换句话说:我想调查合并了两个给定提交的合并记录(其中对同一文件进行了更改)。
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.
git rev-list $a..master --ancestry-path >a
git rev-list $b..master --ancestry-path >b
然后使用 diff 工具找到 a 和 b 的最后一个公共行。
cmp
进行比较,确实找到了一个共同的提交。然而,这不是同时具有a
和b
提交更改的“最早”/“最老”的共同提交。它甚至也不是“最新”/“最年轻”的提交。它介于两者之间,但我并不完全确定。 - CMCDragonkai