Если вы готовы к длительному чтению, у Майка Ванье есть отличное объяснение . Короче говоря, он позволяет вам реализовать рекурсию на языке, который не обязательно поддерживает ее изначально.
Здесь также говорится: «Коммиты сравниваются с их идентификатором патча, полученным из программы git-patch-id.». При применении выбранной вами вишневой дифференциации, возможно, она оказалась немного другой разницей?
В этом случае будет отличаться не только идентификатор фиксации, но и идентификатор патча, поскольку git-patch-id сообщит о разных идентификаторах патча для коммитов, и, следовательно, они не будут считаться находящимися в ветвях друг друга.
Это легко проверить:
git show 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 | git-patch-id
git show 409c61b3304373a73c787fdf9c08cc338934b74d | git-patch-id
Если первый sha1, возвращенный git-patch-id, отличается от обоих запусков, то
Предупреждающий лектор - я не пробовал свою теорию, но я так интерпретирую страницы руководства.