История диаграмм меток не является линейной. Люди не просто отмечают базовый уровень (master
).
Например, наиболее ценные библиотеки JS/CSS выполняют выпуск по ветке с базовой линии, чтобы сохранить чистую историю различий. Они фиксируют артефакты выпуска (скомпилированные/уменьшенные JS/CSS), поэтому пользователи могут легко захватывать артефакты без необходимости создавать. Если они помечаются на master
, то master
история будет иметь огромные все-все-разные отличия в артефактах сборки.
Реальный пример:
bash# cd js/jquery
/home/user/devel/js/jquery
bash# git remote -v
origin https://github.com/jquery/jquery.git (fetch)
bash# git co master
Already on 'master'
bash# git describe --tags
2.1.0-beta1-590-g47ccf3d
bash# git log --graph --decorate --simplify-by-decoration --oneline --all
* 70605c8 (origin/master, origin/HEAD) Ajax: Only form-encode requests with a body
* 47ccf3d (HEAD -> master) Attributes: do not set properties to false when removing booleans
| * 8339185 (origin/compat) Tests: Make regexes for iOS devices more rigid
| | * f9846ae (tag: 3.0.0-alpha1) 3.0.0-alpha1
| |/
|/|
...
* | 1185427 (tag: 2.1.0-beta1) Tagging the 2.1.0-beta1 release.
Трюки из Как получить последнее имя тега в текущей ветке в Git? бесполезны в реальном мире, для:
git describe --tags
В приведенном выше примере я получаю 2.1.0-beta1, но последнее усилие - 3.0.0-alpha1.
Лучший способ, которым я сейчас пользуюсь, - это просмотреть свернутую историю фиксации вручную:
git log --graph --decorate --simplify-by-decoration --oneline --all