Git Treeishes

Существует несколько способов сослаться на определенный коммит или дерево, несколько иных чем набор полного 40-значного sha значения. В Git, на них ссылаются как на 'treeish'.

Частичный Sha

Если sha-значение вашего коммита '980e3ccdaac54a0d4de358f3fe5d718027d96aae', git узнает его по любому из следующих идентификаторов:

980e3ccdaac54a0d4de358f3fe5d718027d96aae
980e3ccdaac54a0d4
980e3cc

Пока частичное sha-значение уникально - git не спутает его с другим (что весьма маловероятно если вы используете по крайней мере 5 символов), git дополнит частичное sha значение для вас.

Имена ветвей, тагов или удаленок

Вы всегда можете использовать имя ветки, тага или удаленки вместо sha значения, так как они просто указатели. Если ваша ветка master на коммите 980e3 и вы только что выполнили ее push в ветку origin и поставили таг 'v1.0', то все следующие указатели эквивалентны:

980e3ccdaac54a0d4de358f3fe5d718027d96aae
origin/master
refs/remotes/origin/master
master
refs/heads/master
v1.0
refs/tags/v1.0

Это означает содержимое вывода след.команд будет одинаковым:

$ git log master

$ git log refs/tags/v1.0

Спецификация даты

Журнал ссылок (The Ref Log) который ведет git позволяет вам проделывать некоторые похожие вещи локально, например такие как:

master@{yesterday}

master@{1 month ago}

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

Спецификация порядковая

Этот формат выдаст вам N-ое предыдущее значение определенной ссылки. Например:

master@{5}

выдаст вам 5-ое предшествующее значение ссылки головы ветки master.

Родитель морковь

Это выдаст N-ого родителя определенного коммита. Этот формат полезен только в случае слияния коммитов - объекты коммит которые имеют более одного прямого родителя.

master^2

Спецификация тильда

Спека тильда выдаст вам N-ого прародителя объекта коммита. Например,

master~2

наш результат первый родитель первого родителя коммита на который указывает master. Это эквивалентно:

master^^

Вы также можете продолжать это. След. спеки укажут на тот же самый коммит:

master^^^^^^
master~3^~2
master~6

Указатель дерева

Этот неоднозначный коммит из дерева на которое он указывает. Если вы хотите sha значение на которое указывает этот коммит, вы можете добавить '{tree}' спеку в его конец.

master^{tree}

Спека блоб

Если вы желаете получить sha значение определенного блоба, то вы можете добавить путь блоба к концу treeish, след.образом:

master:/path/to/file

Интервал

В заключении, вы можете определить интервал коммитов с помощью спеки интервал. Это даст вам все коммиты между 7b593b5 и 51bea1 (где 51bea1 наиболее свежий), исключая 7b593b5 но включая 51bea1:

7b593b5..51bea1

Это включит каждый коммит начиная с 7b593b:

7b593b.. 


github logo