1
0
mirror of synced 2026-01-05 03:06:35 -05:00
Files
docs/translations/ru-RU/content/get-started/importing-your-projects-to-github/working-with-subversion-on-github/what-are-the-differences-between-subversion-and-git.md
2022-11-16 21:42:42 +00:00

6.6 KiB
Raw Blame History

title, intro, redirect_from, versions, shortTitle, ms.openlocfilehash, ms.sourcegitcommit, ms.translationtype, ms.contentlocale, ms.lasthandoff, ms.locfileid
title intro redirect_from versions shortTitle ms.openlocfilehash ms.sourcegitcommit ms.translationtype ms.contentlocale ms.lasthandoff ms.locfileid
В чем заключаются различия между Subversion и Git? Репозитории Subversion (SVN) похожи на репозитории Git, но есть несколько различий, если говорить об архитектуре проектов.
/articles/what-are-the-differences-between-svn-and-git
/articles/what-are-the-differences-between-subversion-and-git
/github/importing-your-projects-to-github/what-are-the-differences-between-subversion-and-git
/github/importing-your-projects-to-github/working-with-subversion-on-github/what-are-the-differences-between-subversion-and-git
fpt ghes ghec
* * *
Subversion & Git differences cbe328bf3d2fbf3a603f6eef1559715ad48ca7fe fb047f9450 HT ru-RU 09/11/2022 145135734

Структура каталогов

Каждая ссылка, или помеченный моментальный снимок фиксации, в проекте находится в определенных подкаталогах, таких как trunk, branches и tags. Например, проект SVN с двумя функциями, находящимися в разработке, может выглядеть следующим образом:

  sample_project/trunk/README.md
  sample_project/trunk/lib/widget.rb
  sample_project/branches/new_feature/README.md
  sample_project/branches/new_feature/lib/widget.rb
  sample_project/branches/another_new_feature/README.md
  sample_project/branches/another_new_feature/lib/widget.rb

Рабочий процесс SVN выглядит следующим образом:

  • Каталог trunk представляет последний стабильный выпуск проекта.
  • Функции, над которыми ведется активная работа, находятся в подкаталогах в каталоге branches.
  • После завершения работы над функцией каталог функции объединяется с trunk и удаляется.

Проекты Git также хранятся в отдельном каталоге. Однако Git скрывает сведения о своих ссылках, сохраняя их в специальном каталоге .git. Например, проект Git с двумя функциями, находящимися в разработке, может выглядеть следующим образом:

  sample_project/.git
  sample_project/README.md
  sample_project/lib/widget.rb

Рабочий процесс Git выглядит следующим образом:

  • В каталоге .git репозитория Git хранится полный журнал всех ветвей и тегов репозитория.
  • Последний стабильный выпуск находится в ветви по умолчанию.
  • Функции, над которыми ведется активная работа, находятся в отдельных ветвях.
  • После завершения работы над функцией каталог функции объединяется с ветвью по умолчанию и удаляется.

В отличие от SVN при использовании Git структура каталогов остается одинаковой, но содержимое файлов изменяется в зависимости от ветви.

Включение вложенных проектов

Подпроект — это проект, разработка и управление которым осуществляется вне рамок вашего основного проекта. Обычно вы импортируете подпроект, чтобы добавить некоторые функции в проект без необходимости поддерживать код самостоятельно. При каждом обновлении подпроекта можно синхронизировать его с проектом, чтобы все содержимое подпроекта было актуальным.

В SVN подпроект называется внешним SVN. В Git он называется подмодулем Git. Хотя подмодули Git концептуально аналогичны подпроектам, они не обновляются автоматически; необходимо явно запросить добавление новой версии в проект.

Дополнительные сведения см. в разделе Подмодули инструментов Git в документации по Git.

Сохранение журнала

SVN настроен так, что предполагается, что журнал проекта никогда не изменяется. Git позволяет изменять предыдущие фиксации и изменения с помощью таких средств как git rebase.

{% tip %}

GitHub поддерживает клиентов Subversion, что может приводить к непредвиденным результатам при использовании Git и SVN в одном проекте. Если вы изменили журнал фиксаций Git, эти же фиксации навсегда останутся в журнале SVN. Если вы случайно зафиксировали некоторые конфиденциальные данные, обратитесь к статье, которая поможет удалить их из журнала Git.

{% endtip %}

Дополнительные материалы