В 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

Он напечатает только коммиты слияния.

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