Произошло ли слияние из определенной ветки в 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 является необязательным и форматирует вывод