Нахождение того, что Ветвление заканчивается с SHA1 данного коммита, при этом не выбирая ветки локально - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь определить, какая ветвь является источником запроса на получение.

При запуске задания Jenkins у меня есть доступ к последнему принятию запроса на получение SHA1.Оттуда мне нужно знать, какая ветвь имеет такой же коммит SHA1.

Так как во время работы не все ветки извлекаются, я бы хотел оставить это так.

Мой вопрос:

Как я могу получить имя удаленной ветви, которая заканчивается SHA1 данного коммита?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Если ваш Git достаточно новый (2.7.0 или новее), используйте git branch --points-at.Если у вас нет зеркального клона, вам также придется использовать -r, чтобы смотреть на имена удаленного отслеживания, а не на имена ветвей.Вам также нужно будет git fetch все имена.Вы можете использовать поверхностную выборку, если вас интересует количество коммитов и других объектов, которые это принесет.

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

Вы можете достичь всех этих одинаковых вещей, используя имена и хэш-идентификаторы, которые выделяютсяиз git ls-remote, но для этого требуется написать немного кода, а не просто использовать git branch --points-at.Запустите git ls-remote, чтобы увидеть, что он печатает (все, что он делает, это печатает ссылки на другие Git и идентификаторы хеша, полученные в результате первого шага git fetch, если вы запустите git fetch).

В конечном счете, любые ответы, которые вы получите, являются в лучшем случае подозрительными.Вероятно, это неправильный способ делать то, что вы пытаетесь достичь.

0 голосов
/ 11 февраля 2019

Вы можете найти это с помощью

 git branch --contains <commit>

Это даст вам список местных филиалов

или

 git branch -r --contains <commit>

Это даст вам список удаленного отслеживанияветви

...