Вы смотрите на это неправильно.
Что вам нужно сделать, это забыть то, что вы знаете о SVN. В SVN у вас есть хранилище, которое находится на сервере. Вы изменяете свои файлы и фиксируете их дельту.
Однако в git у вас есть репозиторий на вашем компьютере. Если вы хотите, у вас также есть один на GitHub. У кого-то еще, работающего над вашим проектом, также будет собственный репозиторий. Обратите внимание, что я сказал хранилище. Да! Repository! Это означает, что у вас есть вся история прямо на вашем компьютере. Вы можете фиксировать, создавать теги, ветки, объединять все на своем компьютере, ничего не трогая в github.
Добро пожаловать в распределенную систему контроля версий.
Другое отличие от svn состоит в том, что вы не видите коммиты как дельты, но вы видите каждый коммит как целый набор файлов из вашего проекта. Так, например, странного слияния svn (где вы говорите, слияние разницы между этой ревизией и этой ревизией моих файлов) в git не существует. Вы просто сливаетесь с этим снимком проекта.
Зафиксировать тогда означает зафиксировать изменения в ваших файлах в вашем собственном хранилище. Создание тегов - это еще один процесс. Процесс, который не меняет ваши файлы (в отличие от svn, где создание тега означает копирование файлов). Тег в git - это просто указатель на определенный коммит!
Итак, что вы хотите сделать, это две разные вещи:
Подтвердить: зафиксировать изменения в вашем хранилище. Команда
git commit
вы можете добавлять файлы в коммит с помощью git add some_file
и фиксировать только часть изменений в вашем исходном коде (что вы не получаете с svn). Или, если вы хотите зафиксировать все измененные файлы, добавьте параметр -a
.
Push: push отправляет в другой репозиторий, скажем, в удаленный репозиторий с именем origin (который указывает на github), все, что у вас есть в вашем собственном репозитории. Это включает в себя все коммиты, а если вы укажете -tags
, то и теги, которые вы создали Например:
git push origin master -tags
В качестве альтернативы, когда вы хотите обновить свой репозиторий, вы должны сначала:
Fetch: обновить ваш репозиторий до удаленного. Знаменитая:
git fetch origin
это приносит все новые коммиты и теги, которые существуют в origin
, но не в вашем локальном хранилище.
Слияние: затем обновите основную ветвь до ветви удаленного:
git merge remotes/origin/master
Итак, вернемся к вашему делу, нет ничего, что можно было бы зафиксировать, но есть теги, которые вам нужно нажать. И последнее, что нужно сказать, - когда вы удаляете теги, вы удаляете их только из своего собственного хранилища. Чтобы удалить его с пульта:
git push origin :refs/tags/tag_name
Для понимания этого синтаксиса требуется немного более сложное руководство по git push, но пока что примите это. Обратите внимание, что удаление тегов решительно осуждается. Это потому, что если кто-то загрузит этот тег и начнет использовать его и станет зависимым от него, он не сможет найти его позже, если он ему понадобится. Поэтому при создании тегов убедитесь, что программное обеспечение / библиотека соответствуют вашим требованиям.