Как узнать какие ветки были влиты в определенную ветку

Как узнать какие ветки были влиты в ветку зная хэш коммита source и target веток


Ответы (2 шт):

Автор решения: aleksandr barakin

в общем случае — никак.

ведь «ветка» в программе git — это не набор (как-то «помеченных») коммитов, а всего-лишь указатель на коммит. к тому же «плавающий»: его положение смещается по мере поступления коммитов.

более того: на один и тот же коммит может указывать любое количество указателей.

ещё более того: при слиянии можно не пользоваться вообще ни одним указателем, а использовать хэш нужного коммита.


но в реально встречающихся в жизни ситуациях с определённой долей достоверности некие эмпирические выводы по поводу того «что там с чем сливалось» всё-таки можно сделать. например, воспользовавшись командой log программы git:

$ git log --oneline --graph --all

или какой-нибудь программой-визаулизатором истории коммитов с графическим интерфейсом.

→ Ссылка
Автор решения: Zempik

Например, можно вот так:

git log --oneline --merges --ancestry-path <hash_first>..<hash_last>

Где,

  • oneline - формат вывода
  • merges - только влитые коммиты, у которы
  • ancestry-path - выводить только коммиты между hash_first и hash_last
  • hash_first - первый коммит (по времени)
  • hash_last - последний коммит (по времени)

На выводе будет список коммитов слияния. Также можно определить из какой ветки пришел коммит (тут может быть неточность, по сути показывает каким веткам принадлежит этот коммит).

git branch --contains <merge_commit>

Где merge_commit - вывод предыдущей команды

→ Ссылка