Две вещи происходят. Во-первых, git-ревизии - это ревизии всего дерева файлов . Напротив, я считаю, что cvs и svn дают отдельные номера ревизий отдельным файлам. Таким образом, в cvs или svn операция «tag» завершается и присоединяется, например, «stable-pre-new-spec» к file1 версии 1.0.3, файлу 2 версии 1.0.2, файлу 3 версии 2.0, файлу 4 версии 1.3. 7 и т. Д. И затем, когда вы хотите получить этот тег, система отправляется и находит все фрагменты с этим тегом. В git одна ревизия уже относится ко всему набору, тегирование просто дает ему другое имя.
Второе - и это относится ко многим системам cm, включая cvs и svn-- git дает одно и то же имя состоянию и разности . Git называет эту комбинированную вещь коммитом. Таким образом, вы спрашиваете о версии, и она показывает вам разницу между этим и непосредственно предыдущим состоянием. В git идентификатор фиксации фактически является контрольной суммой всего сохраненного содержимого дерева; это просто условно показать вам золотой шип .
В git вы можете пометить коммит или создать из него ветку в любое время после ее создания.