Определить имя ветки из git commit - PullRequest
2 голосов
/ 28 июня 2019

Я предполагаю, что хеш коммита git (5743a31610d38064af35573b91e3bbe39d808b9b) всегда будет отображаться в 0 или 1 ветвях git? Есть ли надежный способ отследить, каким было имя ветки при создании git commit? Из того, что я знаю, ветвь git является указателем на коммит, при условии, что мы можем надежно указать на ветку (если ветвь все еще существует)?

Контекст: я создаю некоторые журналы изменений развертывания devops, чтобы мы могли отслеживать то, что мы изменили - мне интересно, стоит ли называть выпущенные ветки git или просто помещать туда хеш git commit, и мы можем изменить поиск по имени ветки, если мы действительно хотим?

1 Ответ

4 голосов
/ 28 июня 2019

Я предполагаю, что хеш коммита git (5743a31610d38064af35573b91e3bbe39d808b9b) всегда будет отображаться в 0 или 1 ветвях git?

Это плохое предположение. В типичном репозитории есть один коммит - корневой коммит - который есть в каждой ветке.

Тем не менее, противоположное направление: по имени (имя ветви или тега или, по сути, любой ссылке, идентифицирующей коммит) вы можете найти (единственный) коммит, названный по этому имени. Для этого используйте git rev-parse <em>name</em>^{commit}.

Хеш коммита однозначно идентифицирует этот конкретный коммит, и вы можете найти все имена веток или тегов, которые позволяют вам достичь этого коммита, пройдя по графику от одного коммита, который идентифицирует данная ветвь или тег:

git branch --contains <hash>
git tag --contains <hash>

Контекст: я создаю несколько журналов изменений развертывания devops, чтобы мы могли отслеживать то, что мы изменили - мне интересно, стоит ли называть выпущенные ветки git или просто помещать туда хеш git commit, и мы можем отменить поиск имени ветви, если мы действительно хотим?

Обычный подход здесь заключается в создании имени тега для идентификации конкретного коммита, который был передан конкретному пользователю. Поскольку тег именует один единственный объект (обычно коммит), и вы имеете полный контроль над написанием тега, это имеет тенденцию работать особенно хорошо.

...