ОБНОВЛЕНИЕ
Я вижу, что этот вопрос стал несколько популярным.Прошло уже много лет с моего по-настоящему приятного использования Git, и с тех пор я многому научился. Пожалуйста , довольно пожалуйста прочитайте последний абзац перед тем, как продолжить о своих приключениях в Git, с тем, что вы узнали из этого Q & A.
Я хочу сочинитьверсия сборки приложения, которая автоматически выводится из имени ветви GIT, на которой я работаю (при сборке), и количества коммитов с тех пор, как ветвь разошлась.Я считаю, что это будет уникальным для любого коммита в моем GIT-репозитории?Имена ветвей уникальны, а коммиты связаны друг с другом вдоль ветки?Если и когда я отмечу коммит, у меня также может быть префикс версии с этим тегом.
Таким образом, git describe
делает то, что я хочу, но он не включает имя ветви, на которой я нахожусь, ион включает в себя сокращенный хеш коммита SHA-1, который, как мне кажется, мне не нужен, поскольку он ничего не добавляет к энтропии строки и может быть избыточным (я могу ошибаться, поэтому, пожалуйста, исправьте меня).
Какие у меня варианты?И я вообще думаю в правильном направлении?Я просто немного устал от добавления цифр к версиям, когда у меня есть более важные вещи, связанные с разработкой программного обеспечения.
Кстати, я никогда не строил с грязным рабочим деревом.Т.е. я всегда фиксирую изменения в репозитории перед созданием публичного релиза.
Теперь я знаю , что ветки Git - это просто ссылки на фиксацию, и поэтому многие ветки (и теги!) Могут указыватьна один коммит.Следовательно, вопрос «к какой ветви принадлежит этот коммит / принадлежит» не является полностью действительным для Git.Git отслеживает «текущую» ветку, в которой вы находитесь - ту, которую он для вас извлек - но в то же время любое количество других веток может указывать на тот же коммит и, возможно, нетОдна ветвь может быть выбрана как «главная», если вы не хотите иметь в виду ту, которая в настоящий момент извлечена на диск.Пожалуйста, прочитайте следующий ответ на этой странице для уточнения.