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"
и получить вывод, как это: