Этот тип операций основан на понятии диапазона ревизий , подробно изложенном в вопросе SO: " Разница в 'git log origin / master' против 'git log origin / master ..' ».
git rev-list
должен иметь возможность вернуться от коммита, до другого, если он будет достигнут.
Итак, я бы попробовал:
git rev-list --boundary 85e54e2408..0815fcf18a
0815fcf18a19441c1c26fc3495c4047cf59a06b9
8a1658147a460a0230fb1990f0bc61130ab624b2
-85e54e240836e6efb46978e4a1780f0b45516b20
(Граничные коммиты начинаются с -
)
Если последний отображаемый коммит совпадает с первым коммитом в команде git rev-list
, то это коммит, достижимый при втором коммите.
Если первый коммит недоступен со второго, git rev-list
ничего не должен возвращать.
git rev-list --boundary A..B
закончится к A
, если A
достижимо с B
.
Это так же, как:
git rev-list --boundary B --not A
, с B
a положительной ссылкой и A
a отрицательной ссылкой .
Он начинается с B
и идет по графику, пока не встретит ревизию, доступную с A
.
Я бы сказал, что если A
напрямую доступен из B
, он встретится (и отобразится из-за опции --boundary
) A
.