git - 如何在git中找到两个提交的最老的共同后代?

标签 git git-merge git-rev-list

给定两个(或更多)提交,我想找到加入它们的最旧的 merge 。类似于 git merge-base 的对立面(找到最年轻的共同祖先)。请注意,我正在寻找的提交将是开始提交的较年轻的后代。

换句话说:我想调查 merge 两个给定提交的 merge 提交(其中发生了对同一文件的更改)。

最佳答案

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 接受出现在所有 merge 祖先列表中的第一个提交。

关于git - 如何在git中找到两个提交的最老的共同后代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32649957/

相关文章:

新的未暂存文件的 Git 警告

java - OpenShift 可以在 DIY Tomcat 上部署 war 还是我应该切换到 OpenStack

Git - 使用rebase将公共(public)分支 merge 到master

git - "git rev-list origin..HEAD"应该返回什么?

git - 对 git rev-list 的困惑

git - 如何使用 libgit2sharp 获取落后/领先的提交数量?

git - 如何在没有 merge 冲突的情况下在 git 中管理 POM 版本号

git - 包 : cannot download, http ://*. com/*/*.git 使用不安全的协议(protocol)

git - 按名称找到交换文件

git - 了解使用 Git 和 Github 进行分支