В git, учитывая две ветви, как мне найти точку, в которой одна ветвь была объединена с другой?
Если у меня есть две ветви, и одна была объединена с другой, как я могу найти из командной строки и без проверки вручную, в какой фиксации произошло слияние?
2 ответа
(Извините за предыдущий ответ, прочитайте вопрос совершенно неправильно.)
У вас есть ситуация, в которой вы находитесь на ветке curbranch
(при совершении HEAD
, но давайте просто использовать curbranch
ниже), и вы считаете, что филиал other
был объединен в curbranch
в прошлом. Как и в связанном вопросе, хитрость заключается в том, чтобы указать коммиты слияния, которые являются предками curbranch
но потомки other
, Согласно документации git-rev-list, это --ancestry-path other..curbranch --merges
(который вы можете передать git log
и т. д. или запустите сценарий для извлечения значений SHA1 и дальнейшей обработки их).
Есть некоторые незначительные проблемы с этим. В частности, то, что что-то находится на этом пути предков и является слиянием, не означает, что это было слияние other
в curbranch
, Например, возможно other
был объединен в accumulator
а потом accumulator
был объединен в curbranch
:
..- B - C - D - E - F <-- curbranch
/
..- G - H - I <-- accumulator
/
..- J <-- other
Здесь оба коммитов H
а также E
являются (1) потомком other
(2) предок curbranch
и (3) слияние. Вы увидите оба коммита. Это может или не может быть то, что вы хотите.
Ты можешь использовать:
git log --merges --oneline
Он напечатает только коммиты слияния.