Git: как найти кратчайший путь между коммитами

Учитывая большой git-репозиторий с сотнями веток / тысяч коммитов и нерегулярную стратегию слияния веток, как определить кратчайший путь между двумя коммитами? Другими словами, какой путь ветвей от более раннего коммита A к более позднему коммиту B пересекает наименьшее количество коммитов?

(В моем случае я пытаюсь проследить историю ветки "разработка", которая случайно была объединена с ветвями функций с помощью ускоренной перемотки вперед. Стратегия "кратчайшего пути" казалась практическим подходом, но я просматривал страницы справки для git-log и git-rev-list [v1.8.3.1], но не нашли ни одной опции, которая, кажется, делает это. Я что-то упускаю из виду?)

1 ответ

Я не уверен, что вы спрашиваете, но чтобы узнать, как А добрался до Б, вы можете использовать это:

git log commitA..commitB

Вы можете использовать --graph а также --simplify-merges флаги, чтобы сделать его более понятным.

Вы также можете предварительно подтвердить журнал следующим образом:

git log --simplify-merges --graph --pretty="tformat:%C(yellow)%h%Creset\\ %Cgreen(%ar)%Creset\\ %C(blue)<%an>%Creset\\ %C(red)%d%Creset\\ %s"

и получить вывод, как это:

Другие вопросы по тегам