Как мне получить последнее слияние с превращения в мастера в Git? - PullRequest
2 голосов
/ 15 октября 2019

Для того, чтобы автоматизировать мой CI, мне нужно получить информацию о последнем слиянии, выполненном из ветви develop в ветку master (или, более обобщенно, из данного источникаветвь к данной ветке назначения). Я пробовал с

git log --oneline --merges  master -20

, но это дает мне список всех последних 20 слияний в master , без дифференциации по ветви источника (оставляя мне громоздкую задачу для анализа и выводаИсходная ветка из комментария). Существует ли чистый и надежный способ фильтрации по исходной ветви непосредственно из командной строки ?

Примечание: I не требуется для предложений, связанных с CI или филиалами. лучшие практики управления. Мы внутренне используем рабочий процесс GitFlow (https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow),, поэтому все, что связано с репозиторием / CI уже находится в идеальном порядке (методологически). Мне просто нужен очень специфичный ответ на оченьконкретный вопрос, спасибо!

Ответы [ 2 ]

2 голосов
/ 15 октября 2019

Есть ли способ фильтрации по ветви источника непосредственно из командной строки?

Нет. Ветви в Git - это просто ярлыки. Слияния не помнят, с какой ветки они были объединены, ни с какой, они помнят только свои родительские коммиты и фиксируют сообщения. После объединения обе истории в равной степени становятся частью ветви.

Это оба разных представления одного и того же хранилища.

      < C <-- D <---- I [develop]
     /         \     /
A < B < E < F < G < H [master]

              <------ I [develop]
             /       /
A < B < C < D < G < H [master]
     \         /
      E <--- F

Все коммиты, кроме I, являются частью ветви master (т.е. . они могут быть достигнуты из H). Все коммиты являются частью ветви develop (т. Е. К ним можно обратиться из I). Был ли G слиянием с develop или с не связанной ветки? Топологически невозможно определить.

Лучшее, что вы можете сделать, - это попытаться получить информацию из сообщения и истории коммита слияния. Если ваши сообщения фиксации слияния непротиворечивы, вам, возможно, удастся сойти с рук что-то подобное, но оно хрупкое.

git log --oneline --merges <destination> | grep "Merge branch '<source>'"
0 голосов
/ 23 октября 2019

Я рекомендовал создать специальный журнал, в следующем списке есть отличный журнал для просмотра различных веток, пользователя и времени фиксации назад

https://gist.github.com/gollum23/bbb115977677b60eea97

...