Получите git diff для любой объединенной ветви

Для каждого дефекта в коде я создаю отдельную ветку. Когда дефект исправлен, я объединяю эту ветку в master, поэтому у меня есть история, как показано ниже (мы видим две ветви с исправлениями):

          defect1 fix         defect2 fix
         a---b---c---d           e---f
        /             \         /     \
---o---1---x---y---z---2---o---3---w---4---o--- 

Вопрос состоит в том, как получить diff для fix1 (между началом ветви (1) и концом ветви (2)) или fix2 (разница между (3) и (4)) в любой момент времени (например, для любого закрытого дефекта в прошлом ).

Обновление: актуальный вопрос, как выяснить суммы SHAa а такжеd илиe а такжеf выполнить следующую очевидную команду сравненияdiff <commit> <commit>

Ответы на вопрос(4)

какие изменения представила ветвь компонента, после объединения вы просто запускаете:

git diff HEAD^..HEAD

Наmaster ветка. Это показывает различия между первым родителем HEAD (фиксация слияния) и HEAD, эффективно отображая различия, которые объединяет целая ветвь объектов, внесенная в основную ветвь.

Не нужно усложнять:)

Как насчет

git diff <commit> <commit>

Где параметры фиксации - это контрольные суммы SHA фактических коммитов.

Ответ прост:

git diff 1..d

Это показывает разницу между точкой ветвления вашегоdefect1 fix ветвь (то есть1) и это конец (т. е.d).

Чтобы найти началоdefect1 fix ветка, используйте

git merge-base master defect1-fix-branch

как указано в этом ответе:https: //stackoverflow.com/a/2458173/52016.
Это дает тебе1 согласно документацииgit merge-base.

Конецdefect1 fix ветка просто идентифицируется по имени. Итак, нахождение всех различий, введенных вdefect1 fix, тебе нужно сделать

git diff 1..defect1-fix-branch

это эквивалентно, как подробно описано в " Не могу вспомнить случай, когдаgit diff master..lab а такжеgit diff master...lab будет по-другому ", чтобы:

 git diff master...defect1-fix-branch

git diff A...B эквивалентноgit diff $(git merge-base A B) B

(От " Git diff не показывает достаточно ")

ВАШ ОТВЕТ НА ВОПРОС