Произошло ли слияние из определенной ветки в master?

У меня есть две основные ветки в репозитории Git - развиваться и осваивать. Разработка новых функций происходит в филиалах разработки, которые затем объединяются в мастер для развертывания.

Я хотел бы определить, произошло ли слияние с превращения в мастера с определенного времени. Я даже не очень заинтересован в реальных коммитах, только в том, что что- то из разработки было объединено с мастером.

Я пытался:

git rev-list --merges origin/develop..origin/master --since <date> | wc -l

в течение периода, когда я знаю, что есть слияния, но всегда кажется, что он возвращает ноль.

Обновить

Кроме того, я попытался создать его, шаг за шагом. Начиная с:

git rev-list --merges origin/master --since <date>

Я получаю все слияния с мастером, как из ветви разработки, так и из любых ветвей исправлений, которые могут существовать. Только когда я добавляю ограничение "происхождение / развитие", я ничего не получаю в результатах.

2 ответа

Решение

Чтобы найти последний раз, когда ветка была объединена, я бы использовал git merge-base, Это показывает последний коммит, который объединяет обе ветви.

git merge-base origin/develop origin/master

Это обеспечит последний общий SHA в обеих ветвях, давая вам представление о том, когда они были в последний раз объединены. Вы можете передать коммит SHA в git log и увидеть последний коммит.

git merge-base origin/develop origin/master | xargs git log -1

Если вы хотите увидеть все коммиты в ветке, начиная с этого SHA:

git merge-base origin/develop origin/master | xargs -I sha git log sha..origin/develop

При этом вы сможете увидеть список всех коммитов, сделанных на origin/develop которые еще не включены origin/master,

Другой вариант должен быть:

git log --merges --since=<date> --oneline origin/develop..origin/master
  • --merges сообщает логу показывать только слияния
  • --oneline является необязательным и форматирует вывод
Другие вопросы по тегам