Я нашел этот вопрос, когда искал способ получить текущую ревизию, чтобы использовать ее в дальнейших командах git. Но когда я прочитал ответы, я понял: «Ой, подождите, мне это не нужно, я могу просто использовать на HEADсамом деле».
Антуан Пинсард
Ответы:
228
Что вы подразумеваете под "номером версии"? Довольно часто помечать коммит номером версии, а затем использовать
$ git describe --tags
идентифицировать текущую ГОЛОВКУ по любым тегам. Если вы имеете в виду, что хотите знать хеш текущего HEAD, вы, вероятно, хотите:
$ git rev-parse HEAD
или для короткого ревизионного хэша:
$ git rev-parse --short HEAD
Часто достаточно сделать:
$ cat .git/refs/heads/${branch-master}
но это не надежно, так как ссылка может быть упакована.
Ссылки могут быть упакованы .git/packed-refs, поэтому вам следует избегать прямого доступа .git/refs/. Просто используйте git rev-parse master(или git rev-parse refs/heads/masterесли вам нужно быть полностью однозначным).
Крис Джонсен
108
Есть много способов, git log -1это самый простой и самый распространенный, я думаю,
Как сделать так, чтобы файл стал предыдущей версией?
TIMEX
1
может быть, вы хотите git checkout HEAD ^ - имя файла
manojlds
2
Кстати, это дает НАМНОГО БОЛЬШЕ, чем просто текущая ревизия, и вам придется последовательно ее анализировать (а значит, не самое лучшее / самое простое / распространенное решение, imho)
Я думаю, что это лучший ответ, поскольку он не зависит от реализации. Ответ Уильяма "cat .git / refs /head / master" даст то же значение, но нет гарантии, что он будет работать в будущем, если реализация изменится.
Thagomizer
Согласен, это лучший ответ. Краткое упоминание об этом --shortварианте сделало бы его идеальным.
Бобби Джек
15
Это дает вам первые несколько цифр хэша, и они достаточно уникальны, чтобы использовать, например, номер версии.
HEAD
самом деле».Ответы:
Что вы подразумеваете под "номером версии"? Довольно часто помечать коммит номером версии, а затем использовать
идентифицировать текущую ГОЛОВКУ по любым тегам. Если вы имеете в виду, что хотите знать хеш текущего HEAD, вы, вероятно, хотите:
или для короткого ревизионного хэша:
Часто достаточно сделать:
но это не надежно, так как ссылка может быть упакована.
источник
.git/packed-refs
, поэтому вам следует избегать прямого доступа.git/refs/
. Просто используйтеgit rev-parse master
(илиgit rev-parse refs/heads/master
если вам нужно быть полностью однозначным).Есть много способов,
git log -1
это самый простой и самый распространенный, я думаю,источник
Это дает вам только ревизию.
источник
--short
варианте сделало бы его идеальным.Это дает вам первые несколько цифр хэша, и они достаточно уникальны, чтобы использовать, например, номер версии.
источник
ниже будет работать с любой ранее выдвинутой ревизией, а не только с HEAD
для сокращенного ревизионного хэша:
для длительного пересмотра хэша:
источник