Gitsvn

From AstroNuWiki
Jump to: navigation, search

Что такое git

git это распределенная система управлением версиями файлов, в чём то аналогичная svn. Существует модуль для работы с svn-репозиториями git-svn. Использование этого модуля даёт следующие преимущества:

  • Возможность полного клонирования репозитория. В этом случае локально будет доступна вся история ревизий.
  • Коммиты сначала происходят в локальный репозиторий и только потом в удаленный. Это позволяет сохранять детальную историю изменений с возможностью отката на любое из них, даже без подключения к удаленному репозиторию.
  • Удобная работа с ветками позволяет работать над кодом, при этом не затрагивая остальных пользователей проекта до полной отладки своей версии.

Инициализация локальной копии svn репозитория

Чтобы создать полную копию удаленного репозитория надо выполнить в рабочей папке следующую команду:

git svn clone svn+ssh://server.ru/home/projects/MyProject

Чтобы копировать только последнюю ревизию можно использовать следующие команды:

git svn init svn+ssh://server.ru/home/projects/MyProject
git svn fetch -r HEAD

Добавление и удаление файлов

Аналогично svn файлы/папки добавляются и удаляются следующими командами:

git add file1 file2 fileN
git rm file1 file2 fileN 
git rm --cached file1 file2

Последняя команда удаляет файлы из индекса, но оставляет локальные копии файлов.

Коммит

Команда

git commit

закоммитит только добавленные/удаленные вручную файлы. Чтобы сделать коммит всех измененных файлов, надо использовать команду:

git commit -a

Текст коммита либо передаётся после ключа -m, либо вводится в редакторе после коммита.

Синхронизация данных с удаленным репозиторием

Для получения последней ревизии:

git svn fetch -r HEAD

Объединение последней версии с локальной:

git merge remotes/git-svn

Для экспорта локальных изменений:

git svn dcommit

Работа с ветками

Ветки нужны чтобы изолировать и отладить набор изменений при этом параллельно работая с основной версией репозитория. Создание ветки:

git branch mybranch

Переключение на ветку:

git checkout mybranch

После переключения на свою ветку, все изменения будут сохранены в ней.

Переключение обратно на главную ветку:

git checkout master

Для импорта изменений из другой ветки в главную:

git checkout master
git merge mybranch
git rebase

Последнюю команду необходимо выполнить перед синхронизацией с удаленным svn репозиторием.