Git包含在任意提交之间

时间:2012-03-08 19:21:09

标签: git parent commit contains

我想知道是否有一种通用的方法来查找提交是否是另一方的父级。

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__

3 个答案:

答案 0 :(得分:2)

git rev-list <childSHA> | grep <parentSHA>

如果它是<parentSHA>

的父级,则会返回<childSHA>

答案 1 :(得分:1)

如果commitA是commitB的祖先,则git merge-base commitA commitBcommitA。例如:

if [ "$(git merge-base $commitA $commitB)" = "$commitA" ]; then ...

这比对git rev-list的输出更有效率,如果对你重要的话。

答案 2 :(得分:0)

一种可能性是:

git log --ancestry-path <parentSHA> <childSHA>

如果没有返回任何内容,您就知道parentSHA不是父母。