Как выполнить что-то похожее на теги SVN в Git? - PullRequest
0 голосов
/ 11 мая 2009

Мое приложение должно соответствовать новой спецификации.

Итак, я хочу пометить версию моего приложения как есть. Я хочу иметь возможность проверить эту версию в будущем.

Я зафиксировал все свои последние изменения.

И я делаю:

git tag -a stable-pre-new-spec

Когда я выполняю:

git show stable-pre-new-spec

отображает различия из моего последнего коммита ?! Я не совсем понимаю что происходит.

Должен ли я вместо этого создавать ветку?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

Две вещи происходят. Во-первых, 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 вы можете пометить коммит или создать из него ветку в любое время после ее создания.

0 голосов
/ 11 мая 2009

Я бы использовал ветку в вашем случае:

git checkout -b app_in_current_state

После этого вы сможете продолжить разработку на master, исправляя текущее состояние в ветви.

...