Познакомиться на практике с основными приемами работы в современных системах контроля версий.
- Установить на компьютер графический клиент Git.
- Создайте в своей домашней папке (или в любой другой на ваш выбор) каталог, который будет содержать файлы нового программного проекта.
- Выберите тематику программы, которую собираетесь написать. Язык программирования и используемые инструменты разработки сейчас не важны.
- Инициализируйте в этой директории репозиторий гит.
- Обратите внимание на появление в этой папке скрытой подпапки с названием .git. Если вы ее не видите, то скорее всего, у вас отключено отображение скрытых папок.
- Создайте новый файл для исходного текста программы. Если вы используете программный фреймворк, инициализируйте его в рабочий каталог.
- Напишите несколько строк вашей программы.
- Добавьте файл с исходным текстом (несколько файлов, если необходимо) в индекс вашего репозитория.
- Совершите ваш первый коммит. Напишите осмысленное сообщение коммита.
- Повторите несколько раз. Каждый раз, завершая определенный этап работы, выполняйте коммит и описывайте проделанные изменения в сообщении коммита.
- Просмотрите историю коммитов. Попробуйте перейти на один из прошлых коммитов. Вернитесь в актуальное состояние программы.
Для выполнения лабораторной работы необходимо воспользоваться любым консольным клиентом системы контроля версий Git, подходящую для рабочей операционной системы. Для Windows подойдет, например, дистрибутив git-scm. Этот же пакет включает в себя и консольную утилиту git, необходимую для выполнения следующих работ. Для Linux существует, например, пакет Git Cola.
Для написания сообщений коммита необходимо придерживаться следующего общепринятого правила: в первой строке сообщения следует кратко описать произведенные изменения; если необходимо подробное описание, состоящее из многих строк, то его приводят, отступив от первой строки одну пустую. Помните, что заголовок описания коммита - это то, что будете видеть вы и ваши коллеги в истории изменений проекта.
- Опишите своими словами значение следующих терминов:
- рабочий каталог
- репозиторий
- коммит
- ветка
- Ознакомьтесь с гайдом по выбранной вами программе-клиенту Git.
- Представьте, что вы начинаете большой раздел работы. Для изоляции изменений создайте новую ветку. Назовите ее, чтобы было понятно, что вы в ней будете делать.
- Перейдите в новую ветку и сделайте несколько коммитов.
- Перейдите в основную ветку и обратите внимание на состояние рабочей директории.
- Создайте еще одну ветку для работы над другим направлением в вашей программе. Обычно так работают в команде, каждый участник в собственной ветке. Либо в ветках может идти параллельная работа над разными возможностями программы. В таком случае эти ветки называются тематическими.
- Сделайте несколько коммитов во вновь созданную ветку.
- Перейдите в основную ветку и слейте в нее первую тематическую ветку.
- Слейте в основную ветку вторую тематическую. Если возникли конфликты слияния, разрешите их и завершите слияние.
- Удалите более не нужные тематические ветки. Обратите внимание в истории, что даже при удалении веток никакие коммиты не теряются.
На основе уже полученных знаний о принципах работы СКВ получить более глубокое представление о работе Git при помощи команд терминала.
- Выберите тематику программы, которую собираетесь написать. Создайте для нее рабочую директорию
- Инициализируйте в рабочей директории репозиторий при помощи команды git init.
- Выполните в репозитории команду git status. Проинтерпретируйте полученное сообщение.
- Создайте файл для исходного текста программы. Выполните команду git status.
- Добавьте созданный файл под версионный контроль при помощи команды git add. Еще раз выполните git status.
- Сделайте начальный коммит при помощи команды git commit с опцией -m.
- Сделайте еще несколько коммитов. Выполните команду git log для просмотра истории коммитов.
- Сделайте так, чтобы при коммите измененные файлы автоматически добавлялись в коммит.
- Добавьте еще несколько файлов с исходным текстом программы.
- Добавьте все новые файлы под версионный контроль одной командой.
- На всех стадиях работы пользуйтесь командой git status.
- Инициализируйте в рабочей директории виртуальное окружение (Если вы пишите не на Python, то можете инициализировать какой-либо программный фреймворк, либо начать работать в IDE, которая создает скрытую папку с настройками в рабочем каталоге).
- Добавьте созданную служебную папку в файл .gitignore. Проверьте, что они не добавляются в репозитории при добавлении новых файлов с исходным кодом.
- Создайте новую тематическую ветку git branch. Перейдите в нее с помощью git checkout. Выведите на экран список всех веток.
- Сделайте несколько коммитов в основную и тематическую ветки.
- Слейте изменения в основную ветку с помощью git merge. Если произошел конфликт слияния, разрешите его и завершите слияние с помощью git commit.
- При получении в процессе разработки программы в стабильно работающем состоянии, слейте это состояние в основную ветку и добавьте к коммиту слияния пометку с номером релиза.
Для работы в терминале изучите шпаргалки по основным командам git.
Главные команды, которые вам понадобятся это:
git init - создает репозиторий системы контроля версий в данной директории;
git add - добавляет указанный файл под версионный контроль;
git add . - добавляет все файлы текущей директории под версионный контроль;
git status - показывает состояние рабочей директории по сравнению с последним сохраненным состоянием:
git commit -m "(message)" - сохраняет текущее состояние рабочей директории как новое состояние (создает новый коммит); новый коммит получает сообщение, переданное как параметр;
git commit -am "(message)" - создает новый коммит и автоматически включает в него все изменившиеся отслеживаемые файлы;
git log - выводит историю коммитов репозитория;
git branch - показывает список веток репозитория;
git branch - создает новую ветку на основе текущего состояния с переданным названием;
git checkout -b - создает новую ветку и автоматически делает ее текущей;
git merge - сливает изменения, сделанные в ветке с переданным названием в текущую;
git branch -d - удаляет ветку с переданным названием;
git clone (repo URL) - клонирует удаленный репозиторий, находящийся по переданному адресу в текущую директорию; доступ обычно осуществляется по протоколам HTTP либо SSH;
git fetch - считывает изменения в удаленном репозитории, отсутствующие в локальной копии;
git pull - считывает новые изменения в удаленном репозитории и сливает их в соответствующие локальные ветки;
git push –all - отправляет изменения, сделанные в локальном репозитории в удаленный;
- Что такое удаленный репозиторий?
- Где нужно вводить команды git?
- Для чего нужны ветки в системах контроля веток?
- Как возникают конфликты слияни
- Как разрешать конфликты слияния?
- Ознакомьтесь с методологией разработки GitFlow.
- Установите на свой компьютер инструментальное средство для работы с GitFlow.
- Выполните основные задания лабораторной работы с использованием команд git-flow.
Освоить основные навыки работы с облачными и распределенными системами контроля версий, получить навыки работы с инструментальными средствами, обеспечивающими командную работу над разработкой ПО.
- Зарегистрироваться на сайте github.com
- Установить на компьютере программу Git
- Форкнуть данный репозиторий в свой аккаунт
- Склонировать созданный удаленный репозиторий в директорию ~/git/test
- На локальной машине пишем скрипт ~/git/test/backup.sh, с произвольным содержанием
- Фиксируем скрипт в репозитории (делаем коммит)
- Обновляем удаленный репозиторий репозиторий (делаем пуш)
- Через текстовый редактор добавить любую новую строку с комментарием
- Сделать коммит
- Вности синтаксическую ошибку в скрипт
- Сделать коммит ошибочного скрипта
- Откатываем до последней рабочей версии
- Просмотреть историю коммитов
- Добавить несколько коммитов произвольного содержимого
- Создать пулл реквест в данный репозиторий
- Зачем нужен облачный хостинг репозиториев?
- Какими основными функциями обладает сайт github.com?
- Как организовать командную работу над открытым проектом?
- Дополнительно оценивается, если студент продемонстрирует работу с ветками в процессе написания более-сложного программного проекта (не менее трех файлов, двух веток, десяти коммитов, как минимум одно объединение).
- Дополнительно оценивается демонстрация командной работы. Для этого нужно склонировать репозиторий другому члену команды и коммитить от своего имени. При отправке истории на удаленный сервер (push) на сайте будет отображаться общая история. При скачивании истории с сервера (pull) общая история будет отображаться на локальном компьютере.
- Настройте работу с git вашей интегрированной среды разработки по выбору. Для работы с python рекомендуется использовать PyCharm. Выполните задания лабораторной работы в IDE используя встроенные средства работы с системами контроля версий.