Подтвердить что ты не робот

В Git существует ли способ получить "дружественное" имя для произвольной фиксации?

В Git существует множество способов ссылки на фиксацию, включая полный SHA-хэш или сокращенную форму хэша (скажем, первые 6 символов или около того). Вы также можете называть коммиты с использованием "дружественного" синтаксиса, такого как HEAD, HEAD ^, HEAD ^^, HEAD ~ 3 и т.д.

Учитывая произвольную фиксацию в хэш-форме SHA, есть ли инструмент в Git для поиска "дружественного" имени для указанного коммита?

Если я использую git-show-branch, я получаю список изменений в "дружественной" форме, поэтому я чувствую, что должен быть способ... Я просто не могу найти инструмент для этого.

4b9b3361

Ответ 1

Вы можете использовать "git name-rev", чтобы получить форму, о которой вы спрашиваете. Одна проблема с этой формой заключается в том, что, будучи относительно ветки, это не постоянное имя. Таким образом, альтернатива "git описать", которая создает альтернативное дружественное имя, основанное на том, насколько далеко впереди тег данная фиксация.

Например:

[email protected]:~/src/git <master>$ git name-rev 3cd7388
3cd7388 master~2

Но после того, как я сделаю "git pull", master ~ 2 может означать что-то еще. Напротив:

[email protected]:~/src/git <master>$ git describe 3cd7388
v1.6.3.1-153-g3cd7388

Теперь "v1.6.3.1-153-g3cd7388" является постоянным именем. Конечно, он все еще немного длинный (хотя вы можете сократить хэш-бит в конце, указав, например, "-abbrev = 4" ), но он сообщает, что 3cd7388 имеет 153 изменения после версии 1.6.3.1.

Ответ 2

Попробуйте git describe:

$ git describe --all --contains 90de2680dc54c0d600b0694bd175bd09357a8dba
master~2