Нет, но также стоит отметить, что такая функция вводит в заблуждение.
Тот факт, что коммит 4e6810e
, например, находится в ветви master
, не меняет того факта, что коммит 4e6810e
находится в ветви newbranch
. Многие коммиты находятся на разных ветках одновременно. Набор ветвей, которые содержат один коммит C , со временем изменяется по мере создания и уничтожения имен ветвей.
График остается постоянным во всем. Это просто метки - имена ветвей - которые меняются. 1 Оператор commit C находится на ветви B просто означает, что начиная с фиксации, идентифицируемой по имени B и, работая в обратном направлении по всем путям в истории, сформированной графом коммитов, Git может достигать коммит C .
У Git есть идея работать в обратном направлении по графику, но следуя только первому родителю при каждом слиянии. То есть, учитывая график как:
...--o--o--o--o---o--o <-- name1
\ /
o--o--o--o <-- name2
Git может начинаться с коммита наконечника, обозначенного name1
, и проходить назад через оба ряда коммитов, или начинаться с коммита наконечника, обозначенного name1
, и идти назад только вдоль верхнего ряда (при условии, что первый родитель слияния находится вдоль верхнего ряда). Чтобы достичь этого, git log
и git rev-list
- две основные команды перемещения по графу - имеют опцию --first-parent
.
1 Например, после удаления имени master
, фиксация 4e6810e
больше не будет на master
(который больше не существует).