7.03. Отличия SVN от Git
Отличия SVN от Git
В некоторых случаях используется SVN (Apache Subversion), в отличие от Git, это централизованная система контроля версий, требующая установки сервера.
Доступ к SVN осуществляется через протоколы:
- svn:// (собственный протокол);
- http:// или https:// (через веб-сервер);
- file:// (локальный доступ).
В SVN вся история хранится на сервере, и разработчики имеют только рабочую копию. Команды похожие, позволяют тоже скачать клон, получить свежие изменения и отправить изменения на сервер.
Отличия SVN от Git
| Характеристика/команда | SVN | Git |
|---|---|---|
| Архитектура | Централизованная | Децентрализованная |
| Полная история | На сервере | У каждого разработчика |
| Работа офлайн | Нет | Да |
| Ветвление | Медленное (копируются папки) | Быстрое (используются указатели на коммиты) |
| Конфликты | Чаще (блокировки файлов) | Реже (слияние через коммиты) |
| Размер репозитория | Огромный | Компактный (за счёт дельта-компрессии) |
| Клонирование репозитория | svn checkout <URL> | git clone <URL> |
| Обновление локальной копии | svn update | git pull (fetch + merge) |
| Отправка изменений | svn commit | git push |
| Добавление файла | svn add <file> | git add <file> |
| Удаление файла | svn delete <file> | git rm <file> |
| Фиксация изменений | svn commit -m "message" | git commit -m "message" |
| Слияние веток | svn merge <URL> | git merge <branch> |
| Создание ветки | svn copy <URL>/trunk <URL>/branches/<name> | git branch <name> + git push |
| Переключение ветки | svn switch <URL>/branches/<name> | git checkout <branch> |
| Просмотр истории | svn log | git log |
| Отмена изменений | svn revert <file> | git restore <file> |
| Метки (теги) | svn copy <URL>/trunk <URL>/tags/v1.0 | git tag v1.0 |
| Игнорирование файлов | svn:ignore | .gitignore |
| Конфликты | svn resolve | git mergetool |