2014-09-29 2 views
2

У меня есть ветки Git A и B. Как проверить, является ли A предком B, или наоборот?Как проверить, является ли одна ветвь предком другой в Git

git merge-base действительно дает общий предок. Однако я хотел бы знать, есть ли еще лучшие решения.

+1

Не совсем понятно, что вы подразумеваете под веткой, являющейся предком другой - ветви - это просто указатели на совершение, поэтому имеет смысл думать, что коммиты являются предками других коммитов или нет. Но, возможно, 'git branch --contains' - это то, что вы ищете (' git help branch' для получения дополнительной информации)? – twalberg

ответ

4
git merge-base --is-ancestor A B 
if [ $? -eq 0 ] 
then 
    # it's an ancestor 
else 
    # it's not an ancestor 
fi 

Очевидно, что это работает над фиксациями, на которые указывают ветви. Git на самом деле не отслеживает отраслевую линию, как это делает Clearcase, так что вполне возможно, что вы могли иметь сначала A, затем разветвлялись B, а затем в результате некоторого слияния в конечном итоге с B как предком A .

Смежные вопросы