Урок 6

VCS

1. Контроль версий VCS

1.1. Что такое контроль версий VCS

Система управления версиями (VCS = Version Control System) широко применяются в проектах разработки программного обеспечения и позволяют:

  • хранить несколько версий одного и того же файла;
  • при необходимости возвращаться к более ранним версиям;
  • определять, кто и когда сделал то или иное изменение;
  • вести параллельные ветви разработки.

1.2. Виды VCS

Централизованные: более старый вид VCS - использовались ещё в 70е.

Примеры: SVN, Perforce, MS TFS, ClearCase.

Единое хранилище версий – центральный репозиторий. Разработчик работает с локальной копией и отправляет изменения в центральный репозиторий.  Репозиторий виден всем (у кого есть доступ), и обмен кодом – только через него.

Распределённые: «новое течение», первые системы – 90е, начало 2000х. Массовое распространение – с 2005 года.

Примеры: git, Mercurial, Bazaar.

Каждый разработчик владеет копией репозитория, фактически, своим локальным «сервером» VCS. Копии легко создавать: проще экспериментировать с кодом. Передавать изменения можно между любой парой репозиториев. Нет «главного» репозитория.

1.3. CVCS vs. DVCS

  1. На DVCS можно всё то же, что и на CVCS.
  2. На DVCS проще выполнять слияние ветвей.
  3. На DVCS вся история хранится локально. Можно работать оффлайн и в работа в целом быстрее.
  4. Более гибкая модель обмена изменениями.
  5. Разработчики привыкли к CVCS, нужно перестраиваться.
  6. У CVCS ниже «порог вхождения» - для работы с DVCS надо лучше понимать концепции контроля версий.
  7. В мире CVCS есть фаворит – SVN, в DVCSgit.

1.4. Базовый сценарий работы с VCS

  1. Получить локальную «рабочую копию» кода из репозитория.
  2. Внести изменения.
  3. В случае необходимости: выполнить слияние (merge) изменений с новыми правками в репозитории.
  4. Зафиксировать изменения в репозитории.

2. GitHub

GitHub – крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки. Основан на системе контроля версий Git. Сервис абсолютно бесплатен для проектов с открытым исходным кодом. Слоган сервиса «Social Coding» – «Пишем код вместе». GitHub часто называют социальной сетью для программистов.

3. Git

3.1. Установка git

Скачать git

3.2. Настройка IntelliJ IDEA

Заходим в IntelliJ IDEA. Надо убедиться, что IDE знает где находится исполняемый файл git:

  1. Выбираем наш проект и в верхнем меню выбираем: File->Settings.
  2. Раскрываем список подпунктов "Version Control" щелкнув на треугольник.
  3. Затем выбрать подпункт "Git". Справа будет поле "Path to Git exetutable" оно должно быть заполнено и указывать на правильное расположение, если нет - укажите правильные данные. C:\Program Files\Git\bin\git.exe - для Windows.

3.3. Создание git-репозитория

Первый подход — импорт в Git уже существующего проекта или каталога. Второй — клонирование уже существующего репозитория с сервера.

3.4. Инициализации локального git-репозитория

  1. Для инициализации локального git-репозитория в верхнем меню нажимаем пункт VCS ->Import into Version Control->Create Git Repository.
  2. Выбираем путь где хотим инициализировать репозиторий (можно оставить по-умолчанию).
  3. Для публикации проекта на GitHub в верхнем меню нажимаем пункт VCS -> Import into Version Control -> Share Project on GitHub.

3.5. Состояния файлов в рабочем каталоге

  1. Отслеживаемые файлы — это те файлы, которые были в последнем слепке состояния проекта (snapshot) или подготовлены к коммиту. Они могут быть: неизменёнными, изменёнными, новые (added)
  2. Неотслеживаемые файлы — это всё остальное, любые файлы в вашем рабочем каталоге, которые не входили в ваш последний слепок состояния и не подготовлены к коммиту.

3.6. Команды git 

  1. git add - используется для того чтобы начать отслеживать (добавить под версионный контроль) новый файл.
  2. git commit - сохранение состояния своего проекта в репозиторий git. Каждый раз, когда вы делаете коммит, то есть сохраняете состояние своего проекта в git’е, система запоминает как выглядит каждый файл в этот момент, и сохраняет ссылку на этот снимок. Для увеличения эффективности, если файлы не были изменены, git не запоминает эти файлы вновь, а только создаёт ссылку на предыдущую версию идентичного файла, который уже сохранён.
  3. git fetch - данная команда связывается с указанным удалённым проектом и забирает все те данные проекта, которых у вас ещё нет. После того как вы выполнили команду, у вас должны появиться ссылки на все ветки из этого удалённого проекта. Теперь эти ветки в любой момент могут быть просмотрены или слиты. Важно отметить, что команда fetch забирает данные в ваш локальный репозиторий, но не сливает их с какими-либо вашими наработками и не модифицирует то, над чем вы работаете в данный момент. Вам необходимо вручную слить эти данные с вашими, когда вы будете готовы.
  4. git push - когда вы хотите поделиться своими наработками, вам необходимо отправить (push) их в главный репозиторий. Эта команда срабатывает только в случае, если вы клонировали с сервера, на котором у вас есть права на запись, и если никто другой с тех пор не выполнял команду push. Если вы и кто-то ещё одновременно клонируете, затем он выполняет команду push, а затем команду push выполняете вы, то ваш push точно будет отклонён. Вам придётся сначала вытянуть (pull) их изменения и объединить с вашими. Только после этого вам будет позволено выполнить push
  5. git pull - автоматически извлекает и затем сливает данные из удалённой ветки в вашу текущую ветку. Этот способ может оказаться более простым или более удобным. К тому же по умолчанию команда git clone автоматически настраивает вашу локальную ветку master на отслеживание удалённой ветки master на сервере, с которого вы клонировали (подразумевается, что на удалённом сервере есть ветка master). Выполнение git pull, как правило, извлекает (fetch) данные с сервера, с которого вы изначально склонировали, и автоматически пытается слить (merge) их с кодом, над которым вы в данный момент работаете.

3.7. Метки

Git имеет возможность помечать (tag) определённые моменты в истории как важные. Как правило, этот функционал используется для отметки моментов выпуска версий (v1.0, и т.п.).

3.8. Ветвление

Ветвление означает, что вы отклоняетесь от основной линии разработки и продолжаете работу, не вмешиваясь в основную линию.  Git хранит данные не как последовательность изменений или дельт, а как последовательность снимков состояния (snapshot). Ветка в git'е — это просто легковесный подвижный указатель на один из коммитов. Ветка по умолчанию в Git'е называется master.

3.9. Работа с удалёнными репозиториями

Удалённые репозитории — это модификации проекта, которые хранятся в интернете или ещё где-то в сети. Их может быть несколько, каждый из которых, как правило, доступен для вас либо только на чтение, либо на чтение и запись. 

3.10. Добавить пользователей в свой репозиторий

Добавить пользователей в свой репозиторий

3.11. Ответвление репозиториев

Если вы хотите внести вклад в существующий проект, на отправку изменений в который у вас нет прав, GitHub приветствует ответвления. Когда вы смотрите на страницу заинтересовавшего вас проекта и хотите немного поработать над ним, вы можете нажать на кнопку "Fork" в заголовке проекта, чтобы GitHub скопировал проект вашему пользователю, и вы смогли отправлять туда свои изменения.

 

Git - Основы Git

GitHub Guides HelloWorld

Работа с Git из IntelliJ IDEA и коммит в github.com

Как быстро настроить Github в Intellij IDEA

Как начать работать с GitHub: быстрый старт




0 comments
Leave your comment: