Определить имя ветки из git commit

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

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

1 ответ

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

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

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

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

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

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

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

Другие вопросы по тегам