我想知道是否有一种通用的方法来查找提交是否是另一方的父级。
git branch --contains <hash>
几乎是我想要的。它列出了包含提交的所有分支,但我想知道任意提交是否“包含”另一个提交。
我的临时黑客是在提交时创建一个分支,然后检查它是否包含在列表中,但这似乎很草率。
git branch __temp_branch__ <hash1>
git branch --contains <hash2> # check if __temp_branch__ is in output
git branch -d __temp_branch__
答案 0 :(得分:2)
git rev-list <childSHA> | grep <parentSHA>
如果它是<parentSHA>
<childSHA>
答案 1 :(得分:1)
如果commitA是commitB的祖先,则git merge-base commitA commitB
为commitA
。例如:
if [ "$(git merge-base $commitA $commitB)" = "$commitA" ]; then ...
这比对git rev-list
的输出更有效率,如果对你重要的话。
答案 2 :(得分:0)
一种可能性是:
git log --ancestry-path <parentSHA> <childSHA>
如果没有返回任何内容,您就知道parentSHA不是父母。