У меня есть ветки Git A и B. Как проверить, является ли A предком B, или наоборот?Как проверить, является ли одна ветвь предком другой в Git
git merge-base
действительно дает общий предок. Однако я хотел бы знать, есть ли еще лучшие решения.
У меня есть ветки Git A и B. Как проверить, является ли A предком B, или наоборот?Как проверить, является ли одна ветвь предком другой в Git
git merge-base
действительно дает общий предок. Однако я хотел бы знать, есть ли еще лучшие решения.
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 .
Не совсем понятно, что вы подразумеваете под веткой, являющейся предком другой - ветви - это просто указатели на совершение, поэтому имеет смысл думать, что коммиты являются предками других коммитов или нет. Но, возможно, 'git branch --contains' - это то, что вы ищете (' git help branch' для получения дополнительной информации)? – twalberg